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!

 

 

 還有個井字棋的作業等下放上來

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章