Unity5 中的 WaitForSeconds 错误

WaitForSeconds Error in 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): error CS0119: Expression denotes a type, where a variable, value or method group was expected

问题在这里:yield return WaitForSeconds(3);

WaitForSecondsclass。要产生它,您必须创建它的新实例。这可以通过简单地在 WaitForSeconds.

之前添加 new 关键字来完成

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


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

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

    zoneNameText.text = zoneName;
    yield return waitTime;
}