Unity 3D 游戏与编程

3D 游戏与编程——作业二

1、简答题

1)解释 游戏对象(GameObject)和 资源(Assets)的区别和联系

Assets 是游戏中具体的资源,比如 texture,mesh,material,shader,script 等,它们存在于文件夹中,不一定用到;GameObject 是游戏中实际存在的对象,由 Assets 实例化而来,是对 Assets 的引用和复制的关系。

2)下载几个游戏案例,总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)

请添加图片描述

以上是某个游戏的资源的结构,包含模型,预制,脚本等游戏资源,分门别类地存放在不同文件夹中,便于整理和使用。

请添加图片描述
上图是该游戏对象的结构,根据对象的类型(General, Player, Lever, Game-Mode)存放在不同文件夹下,便于修改,组织。

3)编写一个代码,使用debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件。(基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate();常用事件包括 OnGUI() OnDisable() OnEnable() )

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FirstBeh : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Debug.Log("This Start!");}// Update is called once per framevoid Update(){Debug.Log("This Updated");}void OnEnable(){Debug.Log("This Enabled");}void OnDisable(){Debug.Log("This Disabled");}void Awake(){Debug.Log("This Awaked");}void LateUpdated(){Debug.Log("This LateUpdated");}void FixedUpdate(){Debug.Log("This FixedUpdate");}private void OnGUI(){Debug.Log("This is ONGUI");}
}

请添加图片描述

Awake:当一个游戏对象实例被载入时被调用,或是脚本构造时调用
Start:第一次进入游戏循环时调用
Update:当行为启用时,其 Update 在每一帧被调用
Fixedupdate:当行为启用时,其 Fixedupdate 在每一时间片被物理引擎调用
OnGUI:渲染和处理 GUI 事件时调用
OnEnable:当对象变为可用或激活状态时被调用
OnDisable:当对象变为不可用或非激活状态时被调用
LateUpdate:所有 Update 调用完之后,被游戏循环调用

4)查找脚本手册,了解 GameObject,Transform,Component 对象
分别翻译官方对三个对象的描述(Description)
描述下图中 table 对象(实体)的属性、table的Transform的属性、table的部件
用UML 图描述 三者的关系(请使用UMLet 14.1.1 stand-alone版本出图)、

Description:

  • GameObject:是Unity场景里面所有实体的基类。

  • Transform:物体的位置、旋转和缩放。

  • Component:一切附加到游戏物体的基类。

描述:

  • activeSelf:可以定义对象的名称,动静态等属性
  • Transform:可以定义对象的位置、面向方向、大小
  • Box Collider:可以调整坐标系的位置、大小
  • Component:可以给对象增加行为

5)资源预设(Prefabs)与对象克隆(clone)
预设(Prefabs)有什么好处?
预设与对象克隆(clone or copy or Instantiate of Unity Object)关系?
制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象

资源预设(Prefabs)的好处:

预设就是将设计游戏中所需要的游戏对象进行设计打包,成为一个新的整体,在接下来的设计中作为一个新对象与其他组件发生交互。预设充分发挥了“组合优于继承”的思想和面向对象的思想,让我们在设计过程中更加灵活快捷。

预设与对象克隆的关系:

克隆是将已经存在的游戏对象,或者是资源当中的预设进行复制。预设本身不需要有实例化的游戏对象,而克隆需要复制实例化的游戏对象。而且如果要集中修改通过将预设实例化创建出来的对象,只需要修改预设就能全都修改,方便批量修改。而如果要修改克隆出来的对象只能一个一个修改。

void Start(){print("hello");Debug.Log("start!");Object temp = Resources.Load("new_table");GameObject cube = Instantiate(temp) as GameObject;cube.transform.position = new Vector3(0, 5, 0);}

2、编程实践,小游戏

简单计算器
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Calculator : MonoBehaviour
{public string str_res;public static string str_a;public static string str_b;public static string str_opera;float res;void Start(){Init();}void Init(){str_res = "0";str_a = "";str_b = "";str_opera = "";res = 0;}void OnGUI(){GUI.Box(new Rect(0, 0, 350, 220), "");//对数字进行处理if (GUI.Button(new Rect(0, 0, 50, 30), "1")){str_a += "1";str_res = str_a;}if (GUI.Button(new Rect(60, 0, 50, 30), "2")){str_a += "2";str_res = str_a;}if (GUI.Button(new Rect(120, 0, 50, 30), "3")){str_a += "3";str_res = str_a;}if (GUI.Button(new Rect(180, 0, 50, 30), "4")){str_a += "4";str_res = str_a;}if (GUI.Button(new Rect(0, 40, 50, 30), "5")){str_a += "5";str_res = str_a;}if (GUI.Button(new Rect(60, 40, 50, 30), "6")){str_a += "6";str_res = str_a;}if (GUI.Button(new Rect(120, 40, 50, 30), "7")){str_a += "7";str_res = str_a;}if (GUI.Button(new Rect(180, 40, 50, 30), "8")){str_a += "8";str_res = str_a;}if (GUI.Button(new Rect(0, 80, 50, 30), "9")){str_a += "9";str_res = str_a;}if (GUI.Button(new Rect(60, 80, 50, 30), "0")){str_a += "0";str_res = str_a;}//计算符号if (GUI.Button(new Rect(120, 80, 50, 30), "+")){str_opera = "+";print(str_b);if (str_a != null){str_b = str_a;}str_a = "";str_res = str_b;}if (GUI.Button(new Rect(60, 120, 50, 30), "-")){str_opera = "-";if (str_a != null){str_b = str_a;}str_a = "";str_res = str_b;}if (GUI.Button(new Rect(0, 120, 50, 30), "*")){str_opera = "*";if (str_a != null){str_b = str_a;}str_a = "";str_res = str_b;}if (GUI.Button(new Rect(180, 80, 50, 30), "/")){str_opera = "/";if (str_a != null){str_b = str_a;}str_a = "";str_res = str_b;}if (GUI.Button(new Rect(0, 160, 50, 30), "C")){if (str_a == ""){str_res = "0";return;}else{str_a = str_a.Substring(0, str_a.Length - 1);}str_res = str_a;}if (GUI.Button(new Rect(120, 120, 50, 30), "=")){if (str_opera == "+"){res = float.Parse(str_b) + float.Parse(str_a);}else if (str_opera == "-"){res = float.Parse(str_b) - float.Parse(str_a);}else if (str_opera == "*"){res = float.Parse(str_b) * float.Parse(str_a);}else if (str_opera == "/"){res = float.Parse(str_b) / float.Parse(str_a);}str_b = res.ToString();str_a = "";str_res = res.ToString();}if (GUI.Button(new Rect(180, 120, 50, 30), "CE")){str_a = "";str_a = "";res = 0;str_res = "";}GUI.Label(new Rect(300, 0, 100, 30), str_res);}
}

测试截图:

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/62057.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity3d开发微信小游戏2

文章目录 前言一、开发的一些记录二、最终截图总结 前言 最开使用unity3d开发微信小游戏,遇到了一些问题,记录一下, 同时创建了一个交流群QQ 641029627,现在应该没人,有需要的可以加入一起讨论,广告哥远离…

Unity简单2D游戏开发

Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏——开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Store中搜索下载 “Pixel Adventure ”,第一个就是…

Unity 开发微信小游戏初探

前言 最近因项目需要开始研究Unity开发微信小游戏相关的知识。期间遇到各种坑,网上查阅的资料基本类似,无法解决自己遇到的问题。特用本文记录下过程,方便其他人遇到同样的问题时能够参考。 开发环境 Unity 版本 根据微信小游戏插件文档推荐…

UNITY3D对接QQGame(PC)开发教程(2022)

效果 目标:能在UNITY3D里通过qqgame充值 因为目前还没有这类文章,所以填补这下块空白 文章包含 QQGame登录器的制作 QQGAME和UNITY3D的交互 QQGame平台用户信息的读取 支付规则,后台搭建。 和常见问题。 对接参考腾讯开发者有文档 https:/…

《Unity 2D与3D手机游戏开发实战》上架了。

新书上架了。 这本书主要是Unity开发的入门,附带了一个简单的2D例子,一个3D RPG的简单例子和一个尽可能用插件实现的射击游戏的例子。 书很薄,不过因为是彩页印刷,价钱不是那么实惠。不过说实话,因为这类书里面有很多…

Unity游戏开发 3D RPG(1-4)

如何将普通的3D项目升级到URP 在Package Manner 里的Unity Registry 里搜索 Universal RP ( 通用渲染管线Universal Render Pileline). 随后在Assets 新建Rendering ——URP Assets (with Universal Renderer) Edit -project setting -graphics,在Render pileline setting里…

Unity游戏开发:对话系统的实现

在解谜类游戏中,与npc的对话是一个基础且常用的功能。通常来说,在与npc的对话中玩家可以获取一些有价值的信息并对之后的游戏有一定的导向作用。此外,在玩家获取对应物品前后,与npc的对话内容也会发生相应改变。因此,我…

王小川大模型25天再升级!13B版本开源免费可商用,3090即可部署

衡宇 金磊 发自 凹非寺量子位 | 公众号 QbitAI 就在刚刚,王小川的开源大模型又有了新动作—— 百川智能,正式发布130亿参数通用大语言模型(Baichuan-13B-Base)。 并且官方对此的评价是: 性能最强的中英文百亿参数量开源…

苹果手机免越狱群控电脑端控制手机

据小编了解 ,手机群控这个词一直受网上争议,那么今天小编也在这讨论一下,其实群控系统分很多,市面上有主板机群控,所谓的主板机群控系统是指把手机的主板全部集中到一个机箱控制,但这个就会留下很多弊端&am…

人工智能是否会取代人类的工作岗位?

跨国投资银行高盛预测,人工智能将取代3亿个全职工作岗位。依据是人工智能可以创造出与人类创建的内容无法区分的高水准内容。同一时期,IBM首席执行官阿文德克里希纳以人工智能聊天机器人可以取代7,800名员工为由停止了招聘。IBM并不是唯一一家“毫不犹豫…

第一位计算机科学博士诞生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 2 月 9 日,在中国,今天是道家学派创始人老子的诞辰和清代著名女词人顾太清的生日;在日本,写出《我是猫》的知名作…

用 100 行代码揭开 LLM 集成工具 LangChain 的神秘之处!

整理 | 王子彧 责编 | 梦依丹 出品 | CSDN(ID:CSDNnews) LangChain 是一个强大的程序框架,它允许用户围绕大型语言模型快速构建应用程序和管道。它直接与 OpenAI 的 GPT-3 和 GPT-3.5 模型以及 Hugging Face 的开源替代品&…

The missing quarter of a million 消失的25万 | 经济学人20230311版社论高质量双语精翻

文 / 柳下婴(微信公众号:王不留) 本期我们选择的是3月11日《经济学人》周报封面文章,即社论区(Leaders)的首篇文章:《25万英国人消失之谜》(“The missing quarter of a million”&a…

哈佛计算机系王牌项目,要请AI来当导师了

克雷西 发自 凹非寺量子位 | 公众号 QbitAI 近日,哈佛宣布了一个重磅决定:AI导师将进入课程。 负责的还是计算机系的旗舰项目——计算机科学导论,也就是著名的CS50。 借助机器人导师,哈佛的CS50项目将拥有1:1的师生比。 这一消息是…

哈佛计算机系王牌项目,要请AI来当导师了!

来源 | 量子位 作者 | 克雷西 近日,哈佛宣布了一个重磅决定:AI导师将进入课程。负责的还是计算机系的旗舰项目——计算机科学导论,也就是著名的CS50。借助机器人导师,哈佛的CS50项目将拥有1:1的师生比。 这一消息是CS50项目导师Da…

机器学习吴恩达课程总结(一)

文章目录 1. 第一章 简介1.1 机器学习(Machine Learning)1.2 有监督学习(Supervised Learning)1.3 无监督学习(Unsupervised Learning) 2. 第二章 线性回归(Linear Regression)2.1 假…

吴恩达NLP课程资料

NLP_wuenda 1.简介 吴恩达老师在2020年6月份推出了NLP课程,Natural Language Processing Specialization  本人忙里偷闲将老师的视频和作业都完成了,后续会持续更新课程的资料和作业。目前NLP课程一共分为四门,每门课程会分为三&#xff08…

吴恩达新课程:ChatGPT提示工程,ChatGPT Prompt Engineering for Developers

来源:专知 本文为课程介绍,建议阅读5分钟 您将学习如何使用大型语言模型(LLM)快速构建新的和强大的应用程序。 https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/1/introduction 在ChatGPT Prompt Engineering for Developers中,您将…

python 用户登录,密码错误3次则锁定该用户

需求: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 判断用户是否在黑名单,如果在黑名单提示账号锁定,然后退出操作。 判断账号密码是否正确,如果正确则正常登录。如果不正确有三次输入密码机会…

Git 密码输入错误解决方案

前言:有时候我们不小心输入了密码,想要重新输入一次,但是始终找不到重新输入的提示框,这是因为 Windows缓存了我们的Git账号密码作为凭证,帮助我们下次自动登录 修改Git凭证 总结:控制面板 -> 用户账户…