【发布时间】:2018-05-17 16:51:14
【问题描述】:
这些脚本会导致 Unity 挂起。我在这里错过了什么?
考虑到 Unity 如何处理循环,我知道这可能是有史以来最愚蠢的问题。但我发誓我以前写过这个并且成功了......我做错了什么?我得到循环是无限的,但它必须不断迭代。
定时器.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Timer{
float tickTime;
float lastTicktime;
bool timerRunning = false;
public Timer (float tickTime) {
this.tickTime = tickTime;
}
public void StartTimer() {
timerRunning = true;
lastTicktime = Time.time;
GenerateTicks ();
}
public void StopTimer () {
timerRunning = false;
}
void GenerateTicks () {
while (timerRunning) {
if ((Time.time - lastTicktime) > tickTime) {
Debug.Log ("Tick");
lastTicktime = Time.time;
}
}
}
}
实施
Timer timer;
void Start () {
timer = new Timer (triggerTime);
timer.StartTimer ();
}
【问题讨论】:
-
不完全确定你在问什么 - 但看起来你从来没有打电话给
StopTimer()将 timerRunning 设置为 false 所以它卡在while循环中 -
您的
timerRunning始终是true -
它是否特别需要成为一个循环?为什么不能在
Update()中只运行一次?
标签: loops unity3d time while-loop timer