2016-05-15 2 views
0

Я создаю игру, в которой игрок может назначить определенную задачу npc, и с задачей сложности потребуется столько времени (5 минут для сложной задачи и 1 минута для простой задачи) , Для этого я создал таймер с Time.deltatime.Unity3d Time.deltaTime и проблема с частотой кадров

Starttime = Starttime + Time.Deltatime; 

но за единство Docs DeltaTime так теперь разница между двумя кадрами на ПК игра работает на 60 кадров, так что будет длится 60 кадров, чтобы закончить одну минуту, но на мобильном телефоне это занимает больше времени, чем требуется, поэтому, пожалуйста может кто-нибудь сказать мне, как исправить эту проблему?

+0

исправить то, что? вы копируете/вставляете что-то из документации, заявляете требование, но не можете задать вопрос и, похоже, думаете, что мы пишем вашу программу для вас? – TomTom

+0

Что должно произойти в заданное время? Если вам нужен только сценарий для работы, тогда сохраните время начала и проверьте, когда прошло время ... – Adi

+0

Я думаю, вы пропустили документы. 'Time.deltaTime' предназначен для того, чтобы сделать вас независимым от частоты кадров, поэтому независимо от того, сколько кадров вы используете, это займет то же самое время. Например. для 1-минутной задачи со скоростью 60 кадров в секунду потребуется 3600 кадров, при 30 кадрах в секунду это займет 1800 кадров, но все равно ровно 1 минута. –

ответ

2

не использовать Time.deltaTime или любую аналогичную функцию когда-либо, по какой-либо причине - когда-либо.

Для начинающих с Unity, для всех таймеров и все вопросы, касающиеся времени, просто использовать Invoke

Ваш код будет выглядеть следующим образом ...

void Start() 
{ 
Debug.Log("user begins task .. must complete in 60 seconds"); 
Invoke("TimeIsUpForUser", 60f); 
} 

private void TimeIsUpForUser() 
{ 
Debug.Log("time's up! user must be finished by now"); 
} 

Это так просто.

В качестве примера, весь ваш код может выглядеть примерно так ..

void Start() 
{ 
ShowMiniPuzzleOnScreen(); 
Invoke("TimeIsUpForUser", 60f); 
} 

private void UserHasPlacedFinalPieceOfPuzzle() 
{ 
MessageScreen("Congratulations! You get 100 coins!"); 
balance += 100; 
CancelInvoke("TimeIsUpForUser"); 
} 

private void TimeIsUpForUser() 
{ 
HideMiniPuzzle(); 
PlaySadMusic(); 
MessageScreen("You suck! You are too slow. You lose 50 points."); 
balance -= 50; 
} 
+0

Спасибо, Джо Блау за вашу помощь, но я думаю, что неправильно понял документы о единстве, можете ли вы рассказать мне, если Time.deltaTime - для того, чтобы сделать фреймворк игры независимым, поэтому независимо от того, сколько кадров он работает, это займет то же время или не? –

+0

ура не забудьте использовать ** Вызывать **. @paulp – Fattie

+1

Спасибо Джо Blow. –

Смежные вопросы