Unity5 中的等待秒错误



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

我收到一个脚本错误,我似乎无法弄清楚它告诉我做什么。 我尝试查看各种教程,但不断出现的是静态的东西,例如球员姓名或分数。

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

这是我的代码:

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);
}
}

这是我得到的错误:

资产/区域宣布.cs(26,16(:错误 CS0119:表达式表示需要变量、值或方法组的类型

问题就在这里: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;
}

最新更新