我收到了#34的错误;由于游戏对象TimeOutWarningDialog'而且Coroutine无法启动。不活跃!"但我不确定为什么我会收到这个错误。
只是给出代码的简要说明:
我在GameManger.Update()中寻找不活动
如果在一段时间内处于非活动状态,我会调用GameManager.ShowRestartWarning()
TimeOutWarningDialog将SetActive设为true
我在调用StartRestartTimer()之前检查对象是否处于活动状态,if(timerInstance.activeSelf == true)StartRestartTimer();
我在CountdownTimer类中调用startTimer()
我正在设置我正在设置为“活跃”的对象。在我调用包含协同程序的startTimer函数之前。我在这做错了什么? 任何帮助都会很棒!!
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class CountdownTimer : MonoBehaviour
{
public float countdownLength;
public Text timerText;
public bool stop = true;
private float minutes;
private float seconds;
public void startTimer(float from)
{
stop = false;
countdownLength = from;
Update();
StartCoroutine(updateCoroutine());
}
void Update()
{
if (stop) return;
countdownLength -= Time.deltaTime;
minutes = Mathf.Floor(countdownLength / 60);
seconds = countdownLength % 60;
if (seconds > 59) seconds = 59;
if (minutes < 0)
{
stop = true;
minutes = 0;
seconds = 0;
}
}
private IEnumerator updateCoroutine()
{
while (!stop)
{
timerText.text = string.Format("{0:0}:{1:00}", minutes, seconds);
yield return new WaitForSeconds(0.2f);
Debug.Log(string.Format("{0:0}:{1:00}", minutes, seconds));
}
}
}
然后我在下面的CountdownTimer类中调用startTimer:
import java.applet.Applet;
public class MyApplet extends Applet{
}
答案 0 :(得分:1)
问题出在这个方法中:
void StartRestartTimer()
{
CountdownTimer countdownTimer = timeOutWarningDialog.GetComponent<CountdownTimer>();
countdownTimer.startTimer(countdownLength);
CancelInvoke();
Invoke("RestartGame", countdownLength);
}
首先启动协程,然后调用RestartGame
加载另一个场景。所以带有协程的对象就会被破坏。
我不能给你解决方案,因为它需要更多关于你的场景的知识,但你可能想尝试添加场景加载。