3D游戏编程与设计 Week2


 

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.通过官方参考手册,查找GameObjectTransformComponent对象,简单解释三者之间的关系。(使用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!

 

 

 还有个井字棋的作业等下放上来

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值