解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系。
对象一般有玩家,敌人,游戏场景,摄像机等虚拟父类,这些父类没有实例化,而他们的子类实例化并包含了这些游戏对象,我们可以对这些对象进行操作。
资源可以是我们自定义或下载下来的素材,可以被多个对象使用,有些资源可以做为模板并实例化为对象。资源文件夹(Asset)通常包含脚本,预设,场景,声音等。
下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
资源的目录组织结构:
主要包括动画,文本,场景,素材,模型,预设以及使用说明等。
游戏对象树的层次结构:
主要包括摄像机包,游戏开始位置,场景布局以及文本管理等。
编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件
基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()
常用事件包括 OnGUI() OnDisable() OnEnable()
public class hw : MonoBehaviour {
void Awake(){
Debug.Log ("onAwake");
}
void Start () {
Debug.Log ("onStart");
}
void Update () {
Debug.Log ("onUpdate");
}
void FixedUpdate(){
Debug.Log ("onFixedUpdate");
}
void LateUpdate(){
Debug.Log ("onLateUpdate");
}
void OnGUI(){
Debug.Log ("onGUI");
}
void OnDisable()
{
Debug.Log ("onDisable");
}
void OnEnable(){
Debug.Log ("onEnable");
}
}
查找脚本手册,了解 GameObject,Transform,Component 对象
- 分别翻译官方对三个对象的描述(Description)
(1)GameObject:Unity场景里面所有实体的基类;
(2)Transform:一个对象的位置、旋转和变换大小;
(3)Component:所有附加到游戏对象的基类。
- 描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
table的属性:activeInHierarchy,ObjectName,activeSelf,Tag,Layer,prefabs
transform的属性:Position,Rotation,Scale
table的部件:Mesh Filter,Box Collider,Mesh Renderer
- 用 UML 图描述 三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)
资源预设(Prefabs)与 对象克隆 (clone)
- 预设(Prefabs)有什么好处?
预设相当于一个对象的模板,当某个对象需要重复出现时,用预设可以提高效率,方便管理。预设使得修改的复杂度降低,一旦需要修改所有相同属性的对象,只需要修改预设即可,所有通过预设实例化的对象都会做出相应变化。
- 预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
预设与克隆都能创建出相同的对象。但是,修改预设会使通过预设实例化的所有对象都做出相应变化,而对象克隆本体和克隆出的对象是不相影响的。
- 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象
GameObject prefab = (GameObject)Instantiate (prefab1);
编程实践,小游戏
- 游戏内容: 井字棋 或 贷款计算器 或 简单计算器 等等
- 技术限制: 仅允许使用 IMGUI 构建 UI
- 作业目的:
- 了解 OnGUI() 事件,提升 debug 能力
- 提升阅读 API 文档能力