作业内容
- 简答题
-
解释游戏对象(GameObjects) 和 资源(Assets)的区别与联系。
- 游戏对象: 游戏对象是直接出现在场景Scene中,是资源整合的具体表现,游戏中的所有对象本质上都是游戏对象。
- 资源:资源可以是我们自定义或下载下来的素材,可以被多个对象使用,有些资源可以做为模板并实例化为对象。
- 联系:资源可以作为模板创建游戏对象,游戏对象可以作为资源保存。 -
下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
- 以Asset Store中下载的Russian Military Vehicles游戏为例,进行分析:
- asset:每个Unity项目都包含一个资源文件夹,以资源种类或性质作为分类标准存放到不同目录文件夹下以供快速找寻并运用,即呈现下图1结构。其中T90存放坦克模型资源。
-
- 对象:通过整体-部分的关系构成层次结构,单独的一层表示完整的个体,而每层的个体又表示具体的个体中的某个部分,其中下图1表示坦克整体,下图2表示组成整个的部分零件。
- 编写一个代码,使用 debug 语句来验证MonoBehaviour 基本行为或事件触发的条件
public class test : MonoBehaviour { // Start is called before the first frame update void Start() { Debug.Log("start"); } // Update is called once per frame void Update() { Debug.Log("update"); } void Awake(){ Debug.Log("awake"); } void FixedUpdate(){ Debug.Log("fixupdate"); } void LateUpdate(){ Debug.Log("lateupdate"); } void OnGUI(){ Debug.Log("onGUI"); } void OnDisable(){ Debug.Log("OnDisable"); } void OnEnable(){ Debug.Log("OnEnable"); } }
- 创建基本游戏对象,尝试运行。初步输出图像为下图1,可以了解,在点击运行时,依次执行Awake->OnEnable->start行为,其后可知FixedUpdate必然优先于Update执行,而Update必然优先于LateUpdate执行,而观察图二可知执行次数并不固定,只能确保执行相对顺序。观察图1、2,可知OnGUI每次出现2次与此时场景内游戏对象个数相对应,而执行必然在LateUpdate后。根据下图3,可知FixUpdate、update和LateUpdate行为执行次数基本一致,与执行时间成正比,而onGUI次数则在此基础上乘以游戏对象个数。图3为取消运行后的结果,可知OnDisable为运行结束后执行的行为。
- 创建基本游戏对象,尝试运行。初步输出图像为下图1,可以了解,在点击运行时,依次执行Awake->OnEnable->start行为,其后可知FixedUpdate必然优先于Update执行,而Update必然优先于LateUpdate执行,而观察图二可知执行次数并不固定,只能确保执行相对顺序。观察图1、2,可知OnGUI每次出现2次与此时场景内游戏对象个数相对应,而执行必然在LateUpdate后。根据下图3,可知FixUpdate、update和LateUpdate行为执行次数基本一致,与执行时间成正比,而onGUI次数则在此基础上乘以游戏对象个数。图3为取消运行后的结果,可知OnDisable为运行结束后执行的行为。
- 编写一个代码,使用 debug 语句来验证MonoBehaviour 基本行为或事件触发的条件
-
查找脚本手册,了解 GameObject,Transform,Component 对象
- 分别翻译官方对三个对象的描述
- GameObject: 游戏对象是统一的基本对象,代表人物、道具和场景。它们本身并没有完成多少工作,但是它们充当组件的容器,组件实现真正的功能。
- Transform:转换用于存储游戏对象的位置、旋转、缩放和继承状态,因此非常重要。
- Component:组件是所有附属于游戏对象的基类
- 描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
- 实体属性:Tag->Untagged,Layer->Defaultt
- Transform属性:Position(0,0,0),Rotation(0,0,0),Scale(1,1,1)
- 部件:Transform,Mesh Filter,Box Collider,Mesh Renderer
- 用 UML 图描述 三者的关系
- 分别翻译官方对三个对象的描述
-
整理相关学习资料,编写简单代码验证以下技术的实现:
- 查找对象void Start() { Debug.Log