2015-05-15 92 views
0

我必須找到具有指定父對象的子級對象gameObject。嗯。讓我解釋更多細節。我創建了一個預製件,其中有一個名爲'state'的子對象gameObject,父對象的名稱在我玩遊戲時會更改。 我的意思是孩子gameObject的名字總是相同的,但父親gameObject的名字是完全不同的。我怎麼知道哪一個孩子在指定的父親之下。這是不容易的,因爲我認爲。這是我試過的代碼。unity |查找指定父級的子對象gameObject

go = Instantiate(Resources.Load("Prefabs/User")) as GameObject; 
go.transform.FindChild("State").gameObject.name = userIndex.ToString(); 
go.transform.FindChild(userIndex.ToString()).gameObject.SetActive(false); 

此代碼無效,因爲名稱「state」等於all。我如何修改更清晰和有效。請給我一些想法。


例如,四個預製件的創建名稱是'a','b','c'和'd'。 所有gameObjects都有同名的孩子;'state'。 我想知道的是如何找到'a'(父gameObject)下的'state'(child gameObject)。 我不太瞭解統一功能。我該如何處理找到想要的父母下的孩子。

回答

2

你的問題有點混亂。這是我從你所問的內容中瞭解到的。如何查找在運行時更改其名稱的父對象的子對象。

您可以使用FindChild函數執行此操作,但還有其他方法可以執行此操作。您可以使用查找函數。

通過使用查找功能,當您在要查找的遊戲對象的名稱前面使用'/'時,Unity就會像您正在尋找一個孩子的GameObject一樣。

例如, GameObject.Find("state")將尋找遊戲物體稱爲狀態

如果使用GameObject.Find(/國家/州),統一將ONLY搜索名爲 「狀態」 這是一個遊戲物體被稱爲 「國家」 遊戲對象。

所以假設你的父母遊戲物體被稱爲國家和你的孩子游戲物體被稱爲國家,你可以找到國家遊戲對象與

GameObject.Find("/Country/State"); 

或者這樣

string nameOfParentObject = "ParentObject"; 
string nameOfChildObject = "ChildObject"; 

string childLocation = "/" + nameOfParentObject + "/" + nameOfChildObject; 
GameObject childObject = GameObject.Find (childLocation); 
孩子

如果您需要更頻繁地從父級搜索兒童遊戲對象,甚至可以將它放入一個函數中

GameObject findChildFromParent (string parentName, string childNameToFind) 
{ 
    string childLocation = "/" + parentName + "/" + childNameToFind; 
    GameObject childObject = GameObject.Find (childLocation); 
    return childObject; 
} 

現在,無論何時您想搜索父GameObject中的GameObject子項,都可以調用將返回GameObject的函數。

讓我們只是說,您的父類的名稱是Jinbom,但在運行時更改爲 「Country」,而您的子對象名仍保持爲「State」。你可以這樣做

GameObject childObject = findChildFromParent ("Country", "State"); 

找到「國」遊戲物體而讓你的遊戲對象的運行過程中更改的名稱,你可以只使用yourgameObject.name

您可以在運行

GameObject childObject = findChildFromParent (yourgameObject.name, "State"); 
0

如果修改這樣的代碼可以更有效:

GameObject stateGo = go.transform.FindChild("State").gameObject; 
stateGo.name = userIndex.ToString(); 
stateGo.SetActive(false); 

而且我認爲你需要更詳細地說明你的問題。

0
GameObject.Find("/Country/State"); 

期間做這個工作太棒了。謝謝。該國家/州參數字段就像在Windows 8上的目錄中查找文件,例如: (如果我想要去一個MrMiyagi用戶的「場景」文件夾)

C:\Users\MrMiyagi\Unity\Assets\Scenes 
相關問題