2012年4月10日 星期二

尋找物件的方法 各種的Find

尋找物件的方法有很多種
這邊我介紹幾種常用的

GameObject.Find("name");  //用名字尋找GameObject子物件
GameObject.FindWithTag("Tag");  //用Tag尋找物件(第一個物件)
GameObject.FindGameObjectsWithTag("Tag");  //用Tag尋找物件(全部物件)
Resources.FindObjectsOfTypeAll(typeof(colliderTest)) //尋找Objects

1.GameObject.Find
用名字尋找GameObject子物件
假如你的物件層級如下:





















腳本附加到theObject的物件裡

function Awake(){
      //取得 GameObject下的Capsule物件
      var Capsule:GameObject;
      Capsule=GameObject.Find("Capsule");
      print("Find="+playerer.name);

      //取得 GameObject下的Cylinder物件
      var Cylinder:GameObject;
      Cylinder=GameObject.Find("Cube/Cylinder");
      print("Find="+Cylinder.name);
}

2.GameObject.FindWithTag
新增Tag
















新增一個名稱叫 Tag

須先將GameObject加入Tag











於任一個GameObject裡加入腳本
可找到有Tag的物件,
function Awake(){
       var tagObject:GameObject;
       tagObject=GameObject.FindWithTag("Tag");
       print("FindWithTag="+tagObject.name);
}
如果同時有很多物件都是相同的Tag,FindWithTag只能找到第一個

3.GameObject.FindGameObjectsWithTag
如果想找到所有Tag的GameObject,必須使用FindGameObjectsWithTag
用法如下
function Awake(){
       var tagObject:GameObject[];
       //FindGameObjectsWithTag取得的是個GameObject陣列
       tagObject=GameObject.FindGameObjectsWithTag("Tag");
       //取得有幾個GameObject有"Tag"
       print("FindGameObjectsWithTag="+tagObject.Length);
       //取得所有GameObject有名稱
       for(var i:int=0;i<tagObject.Length;i++){
              print("FindGameObjectsName="+tagObject[i].name);
       }
}

4.Resources.FindObjectsOfTypeAll
使用Resources.FindObjectsOfTypeAll找到所有具有相同類或腳本名稱的物體

function Start(){
       //找尋Test這個腳本
       var TestObj:Object[]=Resources.FindObjectsOfTypeAll(typeof(Test));
       print(TestObj.Length);
       for(var i:int=0;i<TestObj.Length;i++){
              //我在Test裡加了一個Get_GameObject()的function 會回傳該腳本所屬的GameObject
              print(TestObj[i].Get_GameObject().name);
       }
}

沒有留言:

張貼留言