我必须找到具有指定父级的子gameObject。嗯。让我解释一下细节。我正在创建一个预制件,它有一个名为' state'当我玩游戏时,父游戏对象的名称会改变。 我的意思是child gameObject的名称总是相同,但父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"等于全部。我怎样才能更清晰有效地修改。请给我一些想法。
例如,创建的四个预制件的名称是' a'''''''' d' 所有游戏对象都具有相同的孩子名称;'州'。 我想知道的是如何找到'(#child; (父游戏对象)。 我不太了解统一特征。我如何处理在所需父母下找到孩子的问题。
答案 0 :(得分:3)
你的问题有点令人困惑。这就是我从你的要求中理解的。如何查找在运行时更改其名称的父对象的子对象。
您可以使用 FindChild 功能执行此操作,但还有另一种方法可以执行此操作。您只需使用查找功能即可完成此操作。
通过使用Find功能,当您在寻找游戏对象的名称之前使用'/'时,Unity会像您正在寻找一个孩子GameObject一样。
例如,
class ListItemCategory(models.Model):
name = models.CharField(max_length=30, blank=True, null=True)
shoppinglist = models.ForeignKey(ShoppingList)
class ShoppingListItem(models.Model):
shoppinglist = models.ForeignKey(ShoppingList)
category = models.ForeignKey(ListItemCategory, blank=True, null=True, default = None)
item = models.CharField(max_length=200, blank=True, null=True)
class ShoppingList(models.Model):
name = models.CharField(max_length=30, blank=True, null=True, default="Pod List")
会查找名为州的父 GameObject。
如果您使用 GameObject.Find(/ Country / state),Unity将仅搜索名为“州”的GameObject,即内部 父 GameObject名为“国家/地区”。
假设你的父游戏对象被称为国家而你的孩子GameObject被称为状态,你可以找到Country GameObject的孩子
GameObject.Find("state")
或者像这样
GameObject.Find("/Country/State");
如果您需要更频繁地从父母那里搜索儿童游戏对象,您甚至可以将其付诸实践
string nameOfParentObject = "ParentObject";
string nameOfChildObject = "ChildObject";
string childLocation = "/" + nameOfParentObject + "/" + nameOfChildObject;
GameObject childObject = GameObject.Find (childLocation);
现在,只要您想在父GameObject中搜索GameObject子项,您就可以调用将返回GameObject的函数。
我们只是说你的父类的名字是Jinbom,但后来改为 运行时“Country”,而您的子对象名称仍为“State”。你可以通过这个来找到“State”GameObject
GameObject findChildFromParent (string parentName, string childNameToFind)
{
string childLocation = "/" + parentName + "/" + childNameToFind;
GameObject childObject = GameObject.Find (childLocation);
return childObject;
}
要获得在运行时更改的GameObject的名称,您只需使用GameObject childObject = findChildFromParent ("Country", "State");
。
您可以在运行时
执行此操作yourgameObject.name
答案 1 :(得分:0)
如果你这样修改代码会更有效:
#include <cassert>
#include <iostream>
#include <vector>
using namespace std;
class stack{
private:
int capacity;
int data[capacity];
int top;
int bottom;
public:
stack(){
top=0;
bottom=0;
capacity=100;
}
bool isEmpty(){
return top==bottom;
}
int pop(stack S){
//assert(!isEmpty());
int elem = data[top];
top--;
return elem;
}
void push(stack S,int x){
assert(top<capacity-1);
top++;
data[top]=x;
return;
}
};
int main()
{
return 0;
}
我认为您需要详细说明您的问题。
答案 2 :(得分:0)
GameObject.Find("/Country/State");
这很有效。谢谢。 Country / State参数字段的工作方式类似于在Windows 8上查找目录中的文件,例如: (如果我想去MrMiyagi用户的“Scene”文件夹)
C:\Users\MrMiyagi\Unity\Assets\Scenes