目前我使用的是Unity和C#。我的代码如下。
var buttons = FindObjectsOfType<DefenderButton>();
foreach (DefenderButton button in buttons) // color unselect resets back color
{
button.GetComponent<SpriteRenderer>().color = new Color32(41, 41, 41, 255);
}
有什么方法可以替代使用 "FindObjectsOfType"?FindObjectsOfType
?
为所有包含该类的GameObjects设置相同的标签。DefenderButton
或使用Unity中的属性 tag
在 GameObject
类来设置标签。对于这个答案,我将使用标签 any
.设置好标签后,您可以进行以下操作。
foreach (GameObject obj in GameObject.FindGameObjectsWithTag("any"))
{
foreach (DefenderButton button in obj.GetComponents<DefenderButton>())
{
button.GetComponent<SpriteRenderer>().color = new Color32(41, 41, 41, 255);
}
}
找到有标签的对象 string
财产GameObject.Find()
https:/docs.unity3d.comScriptReferenceGameObject.Find.html。
查找您用特定标签标记的对象。GameObject.FindWithTag()
https:/docs.unity3d.comScriptReferenceGameObject.FindWithTag.html。
最后(据我所知),你可以只穿越 GameObject
层次结构和 "查找 "的东西,例如(伪代码只是为了给你一个想法)。
假设你的游戏对象是这样排列的:
- obj 0
- Obj1
- obj1A
- obj2B
- Obj2
如果你在... Obj2
,你可以做以下工作。
var obj2B = transform.parent // obj0
.Children.First() // obj1
.Children.Last() // obj2B