Unity3D中GameObject 詳細介紹

來源:互聯網
上載者:User

標籤:send   end   動態   沒有   object   and   查詢   批量   路徑   

通過Hierarchy面板下的Create菜單可以手動地建立一個GameObject,它可以是一個相機,一個燈光,或者一個簡單的模型,當我們要在程式裡面動態地建立一個相機的時候,可以new一個GameObject,然後把Camera組件Add給它就可以了,建立燈光,GUI等也類似,但要建立簡單模型的時候,我發現並沒有類似Cube,Sphere這樣的組件可供添加,後面知道,通過GameObject這個類的一個靜態方法可以達到這個目的

static GameObject CreatePrimitive(PrimitiveType type);

可以根據PrimitiveType建立五種類型的基本模型

PrimitiveType.Plane,PrimitiveType.Cube,PrimitiveType.Sphere,PrimitiveType.Capsule,PrimitiveType.Cylinder

Unity3D提供一種被稱為Prefab的預置對象,它是以檔案的形式儲存在硬碟上的一個GameObject,它裡面可能包含了各種設定,組件,還有一些指令碼。Prefab允許我們在不同的Scene,甚至Project中使用同一個對象,例如我實現了一個子彈,通過打包成Prefab,我可以在另外一個遊戲裡面直接使用它。

當一個Prefab對象被修改的時候,它的所有執行個體都會相應地被修改

在代碼裡面動態地執行個體化一個Prefab對象

public GameObject obj;
obj = Instantiate( obj  );

要先建立一個公有變數,然後把這個Prefab拖到這個變數上,然後才可以用它來執行個體化對象(我感到一種蛋蛋的憂傷,能不拖嗎)

通過Resources這個類的靜態方法可以將Prefab對象動態載入進來,建立GameObject

GameObject之間的通訊,在遊戲中,我們往往需要知道其他對象的一些資訊,所以我們經常需要動態地查詢另外一個GameObject

1. 尋找父節點 transform.parent

2. 尋找子節點 transform.Find(“name”);  transform.Find(“Arm/Hand/Finger”); 沒有找到會返回null,名字如果包含”/”字元將像路徑一樣穿越層次

3. 尋找情境中的其他GameObject
GameObject.Find 從Scene下開始尋找,根據GameObject的名字進行尋找,允許使用”/”穿越層次尋找,
GameObject.FindWithTag根據Tag尋找一個GameObject,
GameObject.FindGameObjectsWithTag 根據Tag批量尋找GameObject

GameObject的name和Tag可以直接設定,但Tag需要在標籤管理器先定義一個Tag,這個Tag才可用,你不能將一個未定義的Tag賦給GameObject的Tag變數

最後還有一種搓搓的通訊方法,通過Message來調用其他GameObject,預設是垃圾簡訊群發,也可以將一個Object穿進去,然後調它的方法

methodName為方法名,value為方法的參數,options表示是否必須有對象接收該訊息(如果是,且沒有對象接受,u3d報錯)

//調用本層級所有的GameObject上所有指令碼的methodName方法
void SendMessage(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

//朝本層級和上級父節點發送調用命令
void SendMessageUpwards(…)

//目標是本層級和全部子節點…
void BroadcastMessage(…)

調用Object的Destroy方法可以銷毀一個GameObject,組件,或者資源。這是一個靜態方法,函數的原型為 static void Destroy(Object obj, float t = 0.0F );

可以通過將this傳入,銷毀自己。

GameObject的成員變數很多

Unity3D中GameObject 詳細介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.