Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的脚本在应该的时候找不到非活动的游戏对象?_C#_Unity3d - Fatal编程技术网

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()
add
cheet=GameObject.Find(“base”)
并且它应该可以工作。
isOpen
已经包含
SetActive
参数所需的值,因此您只需将其传递给方法
cheet.SetActive(isOpen)
,就像您对
int
string
参数所做的那样<代码>布尔在这方面没有任何不同。不需要
if else
。因为
Find
只搜索活动的游戏对象。要解决这个问题,只需添加一个公共类字段,例如,
public GameObject cheet
然后在
void Start()
add
cheet=GameObject.Find(“base”)
并且它应该可以工作。
isOpen
已经包含
SetActive
参数所需的值,因此您只需将其传递给方法
cheet.SetActive(isOpen)
,就像您对
int
string
参数所做的那样<代码>布尔在这方面没有任何不同。不需要
if else