团结 |找到 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") 将查找名为 stateparent 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");