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