要禁用游戏物体,实现这一目标我已经写了这样的代码:我如何启用禁用的游戏对象,团结
GameObject go;
go = GameObject.FindWithTag("MainCamera");
Destroy(go);
然后我努力使残疾游戏物体。
任何人都可以在这方面帮助我吗?
要禁用游戏物体,实现这一目标我已经写了这样的代码:我如何启用禁用的游戏对象,团结
GameObject go;
go = GameObject.FindWithTag("MainCamera");
Destroy(go);
然后我努力使残疾游戏物体。
任何人都可以在这方面帮助我吗?
重复的问题,但.....
https://docs.unity3d.com/ScriptReference/GameObject.SetActive.html
提示:
go.SetActive(!go.activeInHierarchy); //切换gameobject。
去= GameObject.FindWithTag( “田田”)//更好
当调用Destroy
,你....破坏游戏对象,您不要禁用它。相反,使用SetActive。
此外,避免使用FindXXX
等功能,特别是多次使用。添加引用的检查,而不是
// Drag & Drop the gameobject in the inspector
public GameObject targetGameObject ;
public void DisableGameObject()
{
targetGameObject.SetActive(false) ;
}
public void EnableGameObject()
{
targetGameObject.SetActive(true) ;
}
public void ToggleGameObject()
{
if(targetGameObject.activeSelf)
DisableGameObject() ;
else
EnableGameObject();
}
否则,找对象一次,无论是在启动功能或当您尝试禁用游戏对象。 Keeop记住FindXXX
功能无法找到禁用游戏物体(大部分时间)
// Drag & Drop the gameobject in the inspector
private GameObject targetGameObject ;
public void DisableGameObject()
{
if(targetGameObject == null)
targetGameObject = GameObject.FindWithTag("MainCamera");
if(targetGameObject != null)
targetGameObject.SetActive(false) ;
}
public void EnableGameObject()
{
if(targetGameObject != null)
targetGameObject.SetActive(true) ;
}
public void ToggleGameObject()
{
if(targetGameObject == null)
targetGameObject = GameObject.FindWithTag("MainCamera");
if(targetGameObject == null)
return ;
if(targetGameObject.activeSelf)
DisableGameObject() ;
else
EnableGameObject();
}
如果标记MainCamera,就没有必要进行搜索,使用Camera.main – Everts
使用'游戏对象的海报。 FindWithTag',因此,我也使用它。这是一般的方法。也许,他会改变主意,他会想找到一个带有不同标签的gameobject。 – Hellium