unity中提供了獲取對象的五種方法:
- 通過對象名稱(Find方法)
- 通過標簽獲取單個游戲?qū)ο螅‵indWithTag方法)
- 通過標簽獲取多個游戲?qū)ο螅‵indGameObjectsWithTags方法)
- 通過類型獲取單個游戲?qū)ο螅‵indObjectOfType方法)
- 通過類型獲取多個游戲?qū)ο螅‵indObjectsOfType方法)
Find方法:
static GameObject Find (string name)
傳入的name可以是單個的對象的名字,也可以是hierarchy中的一個路徑名,如果找到會返回該對象(活動的),如果找不到就返回null。
- var cubeF = GameObject.Find("/CubeFather");
- if (null != cubeF)
- {
- Debug.Log("find cube father~");
- }
- cubeF = GameObject.Find("CubeFather");
- if (null != cubeF)
- {
- Debug.Log("find cube father, no /~");
- }
-
- var cubeS = GameObject.Find("/CubeFather/CubeSon");
- if (null != cubeS)
- {
- Debug.Log("find cube son~");
- }
- cubeS = GameObject.Find("CubeFather/CubeSon");
- if (null != cubeS)
- {
- Debug.Log("find cube son, no /~");
- }
- cubeS = GameObject.Find("CubeSon");
- if (null != cubeS)
- {
- Debug.Log("find cube son, no one /~");
- }
結果如上,可見不論參數(shù)是對象名字還是對象的路徑,只要對象存在都會查找到,但是建議最好是寫詳細的路徑名例如CubeFather/CubeSon,這樣的話,在unity查找的過程中會省很多事,效率高;另外不要在每一幀都執(zhí)行的函數(shù)中調(diào)用該函數(shù),可以看上圖結果中會執(zhí)行好多次,用到某個對象時可以在Start這種只執(zhí)行一次的函數(shù)中定義變量獲取Find的返回值,再在每幀都執(zhí)行的函數(shù)中使用該變量即可~
FindWithTag方法:
static GameObject FindWithTag (string tag)
返回一個用tag做標識的活動的對象,如果沒有找到則為null。
- var sphere = GameObject.FindWithTag("Sphere");
- if (null != sphere)
- {
- Debug.Log("Sphere~");
- }
將hierarchy中某個對象的Inspector面板上面的Tag自定義一個,然后為其選擇自定義(上述例子中用的Sphere)
FindGameObjectsWithTag方法:
static GameObject[] FindGameObjectsWithTag (string tag)
返回一個用tag做標識的活動的游戲物體的列表,如果沒有找到則為null。具體代碼略過~
FindObjectOfType方法:
static Object FindObjectOfType(Type type)
返回類型為type的活動的第一個游戲?qū)ο?/span>
FindObjectsOfType方法:
static Object FindObjectsOfType(Type type)
返回類型為type的所有的活動的游戲?qū)ο罅斜?br>
注意:一定保證對象是active的才會找到
為了效率高,一定要保證別在每幀都調(diào)用的函數(shù)中使用上述函數(shù)
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。