团结 |找到 child 个具有指定 parent 的游戏对象
unity | Find child gameObject with specified parent
我必须找到 child 具有指定 parent 的游戏对象。嗯。让我更详细地解释一下。我正在创建一个预制件,其中有一个名为 'state' 的 child 游戏对象,并且 parent 游戏对象的名称在我玩游戏时发生了变化。
我的意思是 child gameObject 的名称始终相同,但 parent gameObject 的名称完全不同。我怎么知道哪个 child 是在指定的 parent 下。这并不像我想的那么容易。这是我试过的下面的代码。
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" 等于所有。怎样修改更清晰有效。请给我一些想法。
例如创建的四个预制件名称分别为'a'、'b'、'c'、'd'。
所有游戏对象都具有相同的名称 child ;'state'。
我只想知道如何找到 'a' (parent gameObject) 下的 'state'(child gameObject)。
我对统一功能了解不多。我如何处理在所需 parent.
下找到 child
如果您这样修改代码会更有效:
GameObject stateGo = go.transform.FindChild("State").gameObject;
stateGo.name = userIndex.ToString();
stateGo.SetActive(false);
而且我认为您需要详细说明您的问题。
你的问题有点令人费解。这是我从你的问题中了解到的。如何找到 parent object 的 child object 在 运行 时间内更改其名称。
您可以使用 FindChild 函数执行此操作,但还有另一种方法可以执行此操作。您只需使用 Find 函数即可。
通过使用查找功能,当您在要查找的游戏名称object 前使用“/”时,Unity 会将其视为您正在查找 child 游戏对象。
例如,
GameObject.Find("state")
将查找名为 state 的 parent GameObject。
如果您使用GameObject.Find(/Country/state),Unity 将仅搜索名为“ state" 即 inside 一个 parent GameObject called "Country ".
因此假设您的 parent GameObject 称为 Country 并且您的 child GameObject 称为 State,你可以用
找到 Country GameObject 的 child
GameObject.Find("/Country/State");
或者像这样
string nameOfParentObject = "ParentObject";
string nameOfChildObject = "ChildObject";
string childLocation = "/" + nameOfParentObject + "/" + nameOfChildObject;
GameObject childObject = GameObject.Find (childLocation);
如果您需要更频繁地从 parent 中搜索 child GameObject,您甚至可以将其放入函数中
GameObject findChildFromParent (string parentName, string childNameToFind)
{
string childLocation = "/" + parentName + "/" + childNameToFind;
GameObject childObject = GameObject.Find (childLocation);
return childObject;
}
现在,只要您想在 parent 游戏对象中搜索游戏对象 child,您只需调用 return 游戏对象的函数即可。
假设您的 parent class 的名字是 Jinbom 但后来改为
"Country" 在 运行 时间内,您的 child object 名称保持为 "State"。你可以通过这样做
找到 "State" GameObject
GameObject childObject = findChildFromParent ("Country", "State");
要获取在 运行 时间内更改的游戏对象的名称,您只需使用 yourgameObject.name
.
您可以在 运行 时间
内完成此操作
GameObject childObject = findChildFromParent (yourgameObject.name, "State");
我必须找到 child 具有指定 parent 的游戏对象。嗯。让我更详细地解释一下。我正在创建一个预制件,其中有一个名为 'state' 的 child 游戏对象,并且 parent 游戏对象的名称在我玩游戏时发生了变化。 我的意思是 child gameObject 的名称始终相同,但 parent gameObject 的名称完全不同。我怎么知道哪个 child 是在指定的 parent 下。这并不像我想的那么容易。这是我试过的下面的代码。
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" 等于所有。怎样修改更清晰有效。请给我一些想法。
例如创建的四个预制件名称分别为'a'、'b'、'c'、'd'。 所有游戏对象都具有相同的名称 child ;'state'。 我只想知道如何找到 'a' (parent gameObject) 下的 'state'(child gameObject)。 我对统一功能了解不多。我如何处理在所需 parent.
下找到 child如果您这样修改代码会更有效:
GameObject stateGo = go.transform.FindChild("State").gameObject;
stateGo.name = userIndex.ToString();
stateGo.SetActive(false);
而且我认为您需要详细说明您的问题。
你的问题有点令人费解。这是我从你的问题中了解到的。如何找到 parent object 的 child object 在 运行 时间内更改其名称。
您可以使用 FindChild 函数执行此操作,但还有另一种方法可以执行此操作。您只需使用 Find 函数即可。
通过使用查找功能,当您在要查找的游戏名称object 前使用“/”时,Unity 会将其视为您正在查找 child 游戏对象。
例如,
GameObject.Find("state")
将查找名为 state 的 parent GameObject。
如果您使用GameObject.Find(/Country/state),Unity 将仅搜索名为“ state" 即 inside 一个 parent GameObject called "Country ".
因此假设您的 parent GameObject 称为 Country 并且您的 child GameObject 称为 State,你可以用
找到 Country GameObject 的 childGameObject.Find("/Country/State");
或者像这样
string nameOfParentObject = "ParentObject";
string nameOfChildObject = "ChildObject";
string childLocation = "/" + nameOfParentObject + "/" + nameOfChildObject;
GameObject childObject = GameObject.Find (childLocation);
如果您需要更频繁地从 parent 中搜索 child GameObject,您甚至可以将其放入函数中
GameObject findChildFromParent (string parentName, string childNameToFind)
{
string childLocation = "/" + parentName + "/" + childNameToFind;
GameObject childObject = GameObject.Find (childLocation);
return childObject;
}
现在,只要您想在 parent 游戏对象中搜索游戏对象 child,您只需调用 return 游戏对象的函数即可。
假设您的 parent class 的名字是 Jinbom 但后来改为 "Country" 在 运行 时间内,您的 child object 名称保持为 "State"。你可以通过这样做
找到 "State" GameObjectGameObject childObject = findChildFromParent ("Country", "State");
要获取在 运行 时间内更改的游戏对象的名称,您只需使用 yourgameObject.name
.
您可以在 运行 时间
内完成此操作GameObject childObject = findChildFromParent (yourgameObject.name, "State");