我试图在显示两个文字之间做出延迟。但它没有用。 代码是:
public class Class1: MonoBehaviour
{
public Text text1, text2;
public bool inArea = false;
private void Update ()
{
if (!inArea)
{
inArea = true;
text1.text = "";
text2.text = "text2";
StartCoroutine(timer());
text2.text = "text3";
}
}
IEnumerator timer()
{
yield return new WaitForSeconds(100);
}
我也试过WaitForSecondsRealTime()
。它也无法正常工作。
答案 0 :(得分:1)
我认为你有点误解了这一点。
一个协程将与其他东西(在你的情况下是text2.text = "text3"
)并行运行,如果它本身不是yield
的延迟(为此你需要从协程调用你的协程或使用javascript将在内部执行此操作。
您必须将所有代码移动到应该受延迟影响的协同程序,如下所示:
private void Update ()
{
if (!inArea)
{
inArea = true;
StartCoroutine(timer());
}
}
IEnumerator timer()
{
text1.text = "";
text2.text = "text2";
yield return new WaitForSeconds(100);
text2.text = "text3";
}
或者,您可以通过将Update
更改为void Update
来使IEnumerator Update
成为协程。
在你目前的情况下,第一个应该没问题。