【发布时间】:2018-08-25 10:40:22
【问题描述】:
我对 Coroutine 的确切功能有一点了解,所以我决定用它创建一个项目。最好的学习方式,不是吗?无论如何,我在每个级别的开头都有 UI 工作脚本,它会告诉您什么级别和/或它是否是新的检查点(生成区域)。它还告诉玩家还剩下多少生命值和生命值。我目前的问题是 WaitForSeconds() 不会暂停“检查点”文本,因此它直接进入 GUI 功能并且似乎跳过了检查点(Cpoint() ) 功能。但是,通过调试日志,我知道事实并非如此。更改在启动时发生得如此之快,以至于在读取之前就消失了。
我已将协程注释掉,因为它不间断地运行。我只希望此代码在联系对撞机时起作用。
欢迎所有解释!我是来学习的!另外,如果有人能指出我如何解决这个问题的正确方向,我将不胜感激!
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class txtLvl1 : MonoBehaviour {
// Use this for initialization
public Text checkpointTxt;
void Start () {
}
// Update is called once per frame
void Update () {
Cpoint();
StartCoroutine("Wait1");
GUI();
}
void GUI()
{
Debug.Log("GUI works");
// StartCoroutine("Wait1");
checkpointTxt.fontSize = 12;
checkpointTxt.text = "Lives = " + HpSc.life + "\nHealth = " + HpSc.HP;
}
IEnumerator Wait() {
yield return new WaitForSeconds(0.5f);
}
IEnumerator Wait1()
{
yield return new WaitForSeconds(2);
}
void Cpoint(){
checkpointTxt.text = "( Checkpoint )";
checkpointTxt.fontSize = 21;
// StartCoroutine("Wait1");
Debug.Log("Cpoint");
//GUI();
}
【问题讨论】:
-
StartCoroutine 将
IEnumerator作为参数。StartCoroutine(Wait1)