Я создал событие таймера, которое, как предполагается, запускается всякий раз, когда мой таймер достигает поставленной цели. Однако, когда я впервые запускаю свой таймер, он достигает определенной длины, а затем просто останавливается. Однако, если я снова запускаю таймер, он работает по назначению, и я понятия не имею, где это происходит.Таймер единства останавливается при первом вызове
Не могли бы вы взглянуть на мой код таймера, чтобы узнать, где эта проблема может возникнуть? Я искал день, но не могу указать.
Ниже приведен пример, когда я делаю что-то с моим таймером в своем основном классе. Некоторые вещи были опущены для ясности.
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;
}
Могу ли я сделать предложение? Вы разместили этот же скрипт по нескольким вопросам, каждый из которых имеет другую проблему, и поэтапно объединил его с нашими ответами. Возможно, пришло время отступить и немного перепроектировать/реорганизовать ваш код, а затем задать более целенаправленный вопрос. – Jerdak