C# Unity5中的WaitForSeconds错误

C# Unity5中的WaitForSeconds错误,c#,unity3d,unity5,C#,Unity3d,Unity5,我正在尝试设置一个简单的脚本,如果我与一个对象(现在只是一个简单的框)发生碰撞,它会触发文本,并在屏幕上显示“区域”名称 我得到了一个脚本错误,我似乎不明白它告诉我要做什么。我试着看了各种教程,但不断出现的是一些静态的东西,比如球员的名字或分数 我希望文本在一段时间后淡入淡出,因此,在我试图传递区域名称的末尾有一个额外的函数。我将此脚本附加到每个区域触发器 这是我的密码: using System.Collections; using System.Collections.Generic; us

我正在尝试设置一个简单的脚本,如果我与一个对象(现在只是一个简单的框)发生碰撞,它会触发文本,并在屏幕上显示“区域”名称

我得到了一个脚本错误,我似乎不明白它告诉我要做什么。我试着看了各种教程,但不断出现的是一些静态的东西,比如球员的名字或分数

我希望文本在一段时间后淡入淡出,因此,在我试图传递区域名称的末尾有一个额外的函数。我将此脚本附加到每个区域触发器

这是我的密码:

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/zoneanonce.cs(26,16):错误CS0119:表达式表示一种类型,其中需要变量、值或方法组


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

WaitForSeconds
class
。要产生它,您必须创建它的新实例。这可以通过简单地在
WaitForSeconds
之前添加
new
关键字来实现

将其更改为
yield-returnnewwaitforseconds(3)


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

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

    zoneNameText.text = zoneName;
    yield return waitTime;
}

很抱歉延迟回复。非常感谢。