所以我有一个名为 menuView
的游戏对象。我创建了 toogleGameobject
脚本,它很简单 - 检查它是否是 selfActive
,如果它被设置为 false,如果它是 false,则将它设置为 true。问题是由于某种原因它没有工作。然后在该函数中我设置了 Debug.Log(selfActive)
并在我的控制台中返回它是真的但我的游戏对象是假的。
我通过按钮调用脚本并且脚本需要参数 gameObject
所以我通过检查器分配它。
public void toogleGameObject(GameObject gameobject)
{
Debug.Log(gameobject + " " + gameObject.activeSelf);
//In image above this down was under comment, so only Debug.Log was caled with function
if(gameObject.activeSelf == true)
{
gameObject.SetActive(false);
}
else
{
gameObject.SetActive(true);
}
}
最佳答案
请注意变量的命名方式。有一个局部变量继承自 MonoBehaviour
和 Component
名为“gameObject
”。
您使用 gameObject
来引用此脚本附加到的游戏对象。
脚本附加到的 GameObject 是您当前正在打开/关闭的对象,不是传递给 toogleGameObject
函数的对象。
传递给 toogleGameObject 函数的 GameObject 被命名为 gameobject
而不是 gameObject
。O 没有大写。
public void toogleGameObject(GameObject gameobject)
{
Debug.Log(gameobject + " " + gameobject.activeSelf);
//In image above this down was under comment, so only Debug.Log was caled with function
if(gameobject.activeSelf == true)
{
gameobject.SetActive(false);
}
else
{
gameobject.SetActive(true);
}
}
您还可以将其简化为:
public void toogleGameObject(GameObject gameobject)
{
Debug.Log(gameobject + " " + gameobject.activeSelf);
gameobject.SetActive(!gameobject.activeSelf);
}
最后,建议大家将参数变量GameObject gameobject
重命名为GameObject objToToggle
,这样以后就不会再犯这个错误了。
public void toogleGameObject(GameObject objToToggle)
{
Debug.Log(objToToggle + " " + objToToggle.activeSelf);
objToToggle.SetActive(!objToToggle.activeSelf);
}
关于c# - activeSelf 返回 true 且 gameobject 为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44692366/