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# 错误CS0029:无法将类型“UnityEngine.GameObject[]”隐式转换为“UnityEngine.GameObject”_C#_Unity3d - Fatal编程技术网

C# 错误CS0029:无法将类型“UnityEngine.GameObject[]”隐式转换为“UnityEngine.GameObject”

C# 错误CS0029:无法将类型“UnityEngine.GameObject[]”隐式转换为“UnityEngine.GameObject”,c#,unity3d,C#,Unity3d,我在以下位置获得错误: lad = GameObject.FindGameObjectsWithTag ("Ladder"); 我只是尝试在警报打开时禁用场景中的所有梯子,然后在警报消失后再次启用它们。我不确定这个错误是什么意思,但需要尽快修复。我用的是C和Unity 5。谢谢你们的帮助 using UnityEngine; using System.Collections; public class LevelAlarm : MonoBehaviour { public bool

我在以下位置获得错误:

lad = GameObject.FindGameObjectsWithTag ("Ladder");
我只是尝试在警报打开时禁用场景中的所有梯子,然后在警报消失后再次启用它们。我不确定这个错误是什么意思,但需要尽快修复。我用的是C和Unity 5。谢谢你们的帮助

using UnityEngine;
using System.Collections;

public class LevelAlarm : MonoBehaviour {

    public bool alarmOn       = false;
    public bool bPlayerHidden = false;

    // How long an alarm lasts for
    [SerializeField]
    private float alarmTimer = 5.0f;

    private float alarmCurrentTimer = 0.0f;


    public GameObject lad;

    // Use this for initialization
    void Start () 
    {
        lad = GameObject.FindGameObjectsWithTag ("Ladder");


    }

    // Update is called once per frame
    void Update () 
    {
        // While alarm is on, run a timer
        if (alarmOn) 
        {
            alarmCurrentTimer += Time.deltaTime;

            lad.SetActive(false);

            // Timer is complete, alarm resets
            if(alarmCurrentTimer >= alarmTimer)
            {
                alarmOn = false;
                alarmCurrentTimer = 0.0f;

                lad.SetActive(true);
            }
        }

    }
}
GameObject.FindGameObjectsWithTag返回一个GameObjects数组,如果需要此数组的第一个对象,请使用以下命令:

void Start () 
{
     var objects =  GameObject.FindGameObjectsWithTag ("Ladder");
     if(objects != null && objects.Length > 0)
     {
         lad = objects[0];
     }
}

错误CS0029:无法隐式转换类型UnityEngine.GameObject[]“toUnityEngine.GameObject” 此错误仅表示您试图停止标记为梯形图的报警。它创建了一个数组,并且您使用的函数只接受utilityEngine.GameObject的一个元素。因此,您可以使用foreach循环访问数组中的所有元素,方法是:

public bool alarmOn       = false;
public bool bPlayerHidden = false;

// How long an alarm lasts for
[SerializeField]
private float alarmTimer = 5.0f;

private float alarmCurrentTimer = 0.0f;


**public GameObject[] lad;**

// Use this for initialization
void Start () 
{
    lad = GameObject.FindGameObjectsWithTag ("Ladder");


}

// Update is called once per frame
void Update () 
{
    // While alarm is on, run a timer
    if (alarmOn) 
    {
        alarmCurrentTimer += Time.deltaTime;
**foreach(var eachLad in lad)
{
eachLad.SetActive(false);
}**


        // Timer is complete, alarm resets
        if(alarmCurrentTimer >= alarmTimer)
        {
            alarmOn = false;
            alarmCurrentTimer = 0.0f;
**foreach(var eachLad in lad)
{
           eachLad.SetActive(true);
}**

        }
    }

}
它是GameObject.FindGameObjectWithTag,而不是GameObject.FindGameObjectsWithTag,在对象后面没有字符s