C# 为什么我的脚本在应该的时候找不到非活动的游戏对象?
我有一个脚本,应该在我的游戏对象上切换为活动状态,但当它禁用它时,它将不再找到该对象 脚本:C# 为什么我的脚本在应该的时候找不到非活动的游戏对象?,c#,unity3d,C#,Unity3d,我有一个脚本,应该在我的游戏对象上切换为活动状态,但当它禁用它时,它将不再找到该对象 脚本: GameObject cheet = GameObject.Find("base"); if (isOpen == true) { cheet.SetActive(true); } else { cheet.SetActive(false); } 仅返回活动的游戏对象,因此我建议在Start()或Awake()中存储对cheet的引用。只要Cheet存在,这将确保您有一个引用,并且只
GameObject cheet = GameObject.Find("base");
if (isOpen == true)
{
cheet.SetActive(true);
}
else
{
cheet.SetActive(false);
}
仅返回活动的游戏对象,因此我建议在Start()
或Awake()
中存储对cheet的引用。只要Cheet存在,这将确保您有一个引用,并且只需执行一次
using UnityEngine;
public class YourClass : MonoBehaviour
{
private GameObject cheet;
private bool isOpen; // Temp isOpen variable
void Start()
{
// Store a reference to the GameObject
cheet = GameObject.Find("base");
}
void Example1()
{
// set active based on varable isOpen
cheet?.SetActive(isOpen);
}
void Example2()
{
// Could not find cheet (null)
if(cheet == null)
return;
// set active based on varable isOpen
cheet.SetActive(isOpen);
}
}
仅返回活动的游戏对象,因此我建议在Start()
或Awake()
中存储对cheet的引用。只要Cheet存在,这将确保您有一个引用,并且只需执行一次
using UnityEngine;
public class YourClass : MonoBehaviour
{
private GameObject cheet;
private bool isOpen; // Temp isOpen variable
void Start()
{
// Store a reference to the GameObject
cheet = GameObject.Find("base");
}
void Example1()
{
// set active based on varable isOpen
cheet?.SetActive(isOpen);
}
void Example2()
{
// Could not find cheet (null)
if(cheet == null)
return;
// set active based on varable isOpen
cheet.SetActive(isOpen);
}
}
因为
Find
只搜索活动的游戏对象。要解决这个问题,只需添加一个公共类字段,例如,public GameObject cheet
然后在void Start()
addcheet=GameObject.Find(“base”)
并且它应该可以工作。isOpen
已经包含SetActive
参数所需的值,因此您只需将其传递给方法cheet.SetActive(isOpen)
,就像您对int
或string
参数所做的那样<代码>布尔在这方面没有任何不同。不需要if else
。因为Find
只搜索活动的游戏对象。要解决这个问题,只需添加一个公共类字段,例如,public GameObject cheet
然后在void Start()
addcheet=GameObject.Find(“base”)
并且它应该可以工作。isOpen
已经包含SetActive
参数所需的值,因此您只需将其传递给方法cheet.SetActive(isOpen)
,就像您对int
或string
参数所做的那样<代码>布尔在这方面没有任何不同。不需要if else
。