1.解释对象与资源的区别于联系,根据官方案例,分别总结资源和对象组织的规则/规律。
对象一般是一些资源的集合体,是资源整合的具体表现,在游戏中一般为玩家,敌人,环境等,而资源可组成游戏中所有的对象,一般包括声音,脚本,材质等,资源可以被多个对象使用,资源作为模板,可实例化成游戏中具体的对象。
2.编写简单程序代码,逐一验证MonoBehaviour 基本行为触发的条件。
publicclassNewBehaviourScript : MonoBehaviour {
void Awake() {
Debug.Log(“Init Awake”);
}
void Start() {
Debug.Log(“InitStart”);
}
void Update() {
Debug.Log(“InitUpdate”);
}
void OnGUI() {
Debug.Log(“InitOnGUI”);
}
void FixedUpdate() {
Debug.Log(“InitFixedUpdate”);
}
void LateUpdate() {
Debug.Log(“InitLateUpdate”);
}
void Reset() {
Debug.Log(“InitReset”);
}
void OnDisable() {
Debug.Log(“InitOnDisable”);
}
void OnDestroy() {
Debug.Log(“InitOnDestroy”);
}
}
3.通过官方参考手册,查找GameObject,Transform,Component对象,简单解释三者之间的关系。(使用UMLet画教程上图)
GameObject为游戏对象,包含了Component,而Transform为Component的一种,无论哪个GameObject都包含Transform,但也可能包含其他Component.
4.整理官方和其他学习材料,介绍如何用程序(代码)管理一个场景的游戏对象树林。编写简单代码验证以下技术的实现:查找对象,添加子对象,遍历对象树,清除所有子对象
查找对象
通过名字查找:public static GameObject Find(string name)
通过标签查找单个对象:public static GameObject FindWithTag(string tag)
通过标签查找多个对象:public static GameObject[] FindGameObjectsWithTag(stringtag)
添加子对象
public staticGameObect CreatePrimitive(PrimitiveTypetype)
遍历对象树
foreach (Transformchild in transform) {
Debug.Log(child.gameObject.name);
}
清除所有子对象
foreach (Transformchild in transform) {
Destroy(child.gameObject);
}
5.预设有什么好处?与对象克隆 (cloneor copy or Instantiate of Unity Object) 关系?
预设就像一个模板,可以通过这个模板创建属性相同的多个对象,而预设与以他为模板的其他对象存在级联约束,预设的Component发生变化,以他为模板的其他对象也一起跟着变化。而对象克隆不会受克隆对象本体的影响,克隆成功后二者独立存在。
6.解释组合模式。并编写验证程序,向组合对象中子对象cast 消息,验证组合模式的优点。
组合模式允许用户将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。
子类对象(my_obj)方法:
void sayHello() {
print("Hello!");
}
父类对象(GameObject)方法:
void Start () {
this.BroadcastMessage("sayHello");
}
结构:
GameObject
|----
my_obj
|----
my_obj
运行结果:
Hello!
Hello!
还有个井字棋的作业等下放上来