Unity3D筆記(一)基礎知識學習筆記

一、解釋對象與資源的區別與聯繫,根據官方案例,分別總結資源和對象組織的規則/規律

資源指的是遊戲中那些直接可見的、對用戶展現出的元素,包括圖片、音樂、視頻、人物、字體。
對象指的是數據?資源的載體?
資源可以被很多對象複用,很多資源構成遊戲的場景。
資源的組織:首先按照大類分爲音頻、視頻、字體、圖片等,再往下可能是按照場景劃分。對象的組織:可以按照玩家、環境、攝像機、音樂等進行分類,這些父類本身沒有實體,只是一個邏輯的關係,他們的子類(可以理解爲葉結點,構成遊戲的主題)

二、編寫簡單程序代碼,逐一驗證 MonoBehaviour 基本行爲觸發的條件。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CamBeha : MonoBehaviour {
    void Awake() {
        Debug.Log ("onAwake");
    }
    void Start() {
        Debug.Log ("onStart");
    }
    void Update() {
        Debug.Log ("onUpdate");
    }
    void OnGUI() {
        Debug.Log ("onGUI");
    }
    void Reset() {
        Debug.Log ("onReset");
    }
    void onDisable() {
        Debug.Log ("onDisable");
    }
    void onDestroy() {
        Debug.Log ("onDestroy");
    }
}

Awake觸發條件:實例正在載入的時候
Start觸發條件:腳本可以被執行的第一幀,所有update沒有執行之前
update觸發條件:腳本可以被執行後,執行完start的每一幀
OnGUI觸發條件:每次GUI被渲染的時候
Reset觸發條件:在inspectors視圖中被用戶點擊的時候
onDisable觸發條件:當這個行爲被disable的時候(雖然我不知道什麼時候會被disable)
onDestroy觸發條件:當這個對象銷燬的時候(被Destory方法銷燬)

三、通過官方參考手冊,查找 GameObject,Transform,Component 對象,簡單解釋三者之間的關係。(使用UMLet 畫教程上圖)

GameObject是所有遊戲對象的基類(base class),component對象是所有組件的基類(base class),這類對象都attack(不會翻譯,只可意會)到gameobject上,transform是component的一個超類(繼承自component),每個GameObject都有一個Component。
UML

四、整理官方和其他學習材料,介紹如何用程序(代碼)管理一個場景的遊戲對象樹林。編寫簡單代碼驗證以下技術的實現:

查找對象

public static GameObject find(string name) // 根據對象名查找
public static GameObject FindWithTag(string tag) // 根據標籤查找對象

添加對象

public static GameObject CreatePrimitive(PrimitiveType type);
public static Object Instantiate(Object original); // 通過克隆添加子對象

遍歷對象樹:
void travel(GameObject father) {
    foreach (Transform child in transform) {
         travel(child);
         // do something here
    }

}

清除所有子對象:
public static void Destroy(Object obj, float t = 0.0F);
void deleteAllChild() {
    foreach (Transform child in transform) {
        Destory(child); // 因爲是object這個對象的方法,所有對象的基類     
    }
}

六、解釋組合模式

組合模式類似於數據結構中的樹的結構,有一個主對象,其他作爲組件。在我的理解看來,他就是一種分級的模式。組合模式實現的關鍵就是簡單和複合對象要實現相同接口,使用戶能夠像操作簡單對象一樣操作複合對象。
以下代碼爲向子對象cast消息示例:

public class CamBeha : MonoBehaviour {

    // Use this for initializationvoid Start () {

        this.BroadcastMessage ("sayHello"); 

    }

}

public class myBeh : MonoBehaviour {



void sayHello() {


Debug.Log ("hello world");


}

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