Unity5中的WaitForSeconds错误

时间:2017-07-23 23:00:41

标签: c# unity3d unity5

我正在尝试设置一个简单的脚本,如果我碰到一个对象(现在只是一个简单的盒子),那么它会触发文本在屏幕上显示" zone"名。

我收到脚本错误,我似乎无法弄清楚它告诉我要做什么。我试图查看各种教程,但不断出现的东西是像玩家名字或分数一样的静态内容。

我希望文本稍微消失,因此我尝试将区域名称传递给最后的额外功能。我将此脚本附加到每个区域触发器。

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ZoneAnnounce : MonoBehaviour {

    // Text Object
    private Text zoneNameText;

    // Exposed Text Variable
    public string zoneName = "Unknown";

    void OnCollisionEnter (Collision col) {

        if ( col.gameObject.name == "Player" ) {
            StartCoroutine(showZoneInfo(zoneName));
        }

    }   

    IEnumerator showZoneInfo (string zoneName) {

        zoneNameText.text = zoneName;

        yield return WaitForSeconds(3);

    }

}

这是我得到的错误:

  

Assets / ZoneAnnounce.cs(26,16):错误CS0119:表达式表示一种类型,其中包含变量,值或方法组

1 个答案:

答案 0 :(得分:1)

问题在于:yield return WaitForSeconds(3);

WaitForSecondsclass。要产生它,你必须创建它的新实例。只需在new之前添加WaitForSeconds关键字即可完成此操作。

将其更改为yield return new WaitForSeconds(3);

如果您已经知道等待的时间(3秒),则可以创建WaitForSeconds的新实例,然后在没有新关键字的情况下使用它。

WaitForSeconds waitTime = new WaitForSeconds(3);
IEnumerator showZoneInfo(string zoneName)
{

    zoneNameText.text = zoneName;
    yield return waitTime;
}