我正在尝试设置一个简单的脚本,如果我碰到一个对象(现在只是一个简单的盒子),那么它会触发文本在屏幕上显示" 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:表达式表示一种类型,其中包含变量,值或方法组
答案 0 :(得分:1)
问题在于:yield return WaitForSeconds(3);
WaitForSeconds
是class
。要产生它,你必须创建它的新实例。只需在new
之前添加WaitForSeconds
关键字即可完成此操作。
将其更改为yield return new WaitForSeconds(3);
如果您已经知道等待的时间(3秒),则可以创建WaitForSeconds
的新实例,然后在没有新关键字的情况下使用它。
WaitForSeconds waitTime = new WaitForSeconds(3);
IEnumerator showZoneInfo(string zoneName)
{
zoneNameText.text = zoneName;
yield return waitTime;
}