我有个问题:
如何将[]
状态分配给rend[]
public GameObject[] Obj;
private bool[] Status;
private MeshRenderer[] rend;
private void Start ()
{
for (int i = 0; i < Obj.Length; i++)
{
rend[i] = GetComponentInChildren<MeshRenderer>();
Status[i] = rend[i];
}
}
根据Object.bool你可以尝试这种方式:
public GameObject[] Obj ;
private bool[] Status;
private MeshRenderer[] rend;
void Start () {
for (int i = 0; i < Obj.Length; i++)
{
rend[i] = Obj[i].GetComponentInChildren<MeshRenderer>();
Status[i] = rend[i] != null;
}
}
你的问题很不清楚所以我可以猜到你想要的是什么:
我想说你想在MeshRenderer
的GameObjects下找到第一个Obj
并得到一个数组Status
,说明它们是否被启用。
MeshRenderer
这个脚本附加到而不是查看Obj
GameObjects。你必须使用它
Obj[i].GetComponentInChildren<MeshRenderer>();
Status[i] =
和rend[i] =
分配值,如果数组从未使用new
初始化。一旦你有Obj
的大小,你可以在开始时这样做
public GameObject[] Obj;
private bool[] Status;
private MeshRenderer[] rend;
private void start()
{
Status = new bool[Obj.Length];
rend = new MeshRenderer[Obj.Length];
// ...
}
但我更喜欢使用List<bool>
和List<MeshRenderer>
,因此您可以稍后添加和删除值(而数组具有固定的长度)。MeshRenderer
是否已启用所以你可以分配rend[i].enabled
全部一起 就像是
public GameObject[] Obj ;
// Using List here you can already initialize it here
// which would be possible using an array
private List<bool> Status = new List<bool>();
private List<MeshRenderer> rend = new List<MeshRenderer>();
private void Start(){
for (int i = 0; i < Obj.Length; i++)
{
rend.Add(Obj[i].GetComponentInChildren<MeshRenderer>());
bool existsAndEnabled = rend[i] != null && rend[i].enabled;
Status.Add(existsAndEnabled);
}
}
请注意,对于Obj
中的一个游戏对象仍然没有找到MeshRenderer
所以我说如果没有Status
也将是false
。