這邊我介紹幾種常用的
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
須先將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);
}
}
沒有留言:
張貼留言