我创建了一个计时器事件,假设我的计时器达到既定目标时会触发。但是,当我第一次触发计时器时,它会达到一定的长度,然后停止。但是,如果我再次触发计时器,它会按预期工作,我不知道这是怎么回事。
有人可以看看我的计时器代码,看看这个问题可能在哪里?我已经搜索了一天,但无法确定它。
以下是我在主课程中使用计时器执行操作的实例。为清楚起见,省略了一些内容。
public float start_time;
public float look_at_time;
public float end_time;
private bool track_timer = false;
//this is called from a different class but acts as my start method
public void Setup()
{
start_time = 0;
running_time = 0;
ResetTimer();
}
void Update ()
{
bool updateTimer = (track_timer && lastHitObject != null);
Check(updateTimer);
MyMethod();
}
void ResetTimer()
{
start_time = 0.0f;
running_time = 0f;
track_timer = false;
}
void MyMethod()
{
if(argument 1)
{
if(argument 2)
{
track_timer = false;
}
}
else
track_timer = false;
}
void Check(bool updateTimer)
{
if(updateTimer)
{
start_time += Time.deltaTime;
running_time += Time.deltaTime;
if ( running_time >= end_time )
{
track_timer = false;
}
}
else
end_time = Time.time;
}
答案 0 :(得分:0)
我真的不明白你在代码中做了什么,试着简化它!您可以使用Invoke,使用当时的第二个参数,或者执行以下操作:
class Timer : MonoBehaviour
{
public float SecondsToWait;
private float timeCounter;
void OnEnable() {
timeCounter = 0;
}
void Update() {
timeCounter += Time.deltaTime;
if(timeCounter >= SecondsToWait)
{
enabled = false; //Disable this object
doMyMethod();
}
}
private void doMyMethod() {
Debug.Log("Doing stuff!");
}
}
如果要停止它,只需禁用即可。如果你想运行它,只需再次启用它。