2016-05-15 3 views
0

私は、プレーヤーが特定のタスクをnpcに割り当てることができるゲームを作成しています。また、タスクの複雑さにより、その時間がかかります(複雑なタスクの場合は5分、単純なタスクの場合は1分) 。これを達成するために、Time.deltatimeでタイマーを作成しました。Unity3d Time.deltaTimeとframerateの問題

Starttime = Starttime + Time.Deltatime; 

が、ユニティ・ドキュメントのdeltatimeあたりとして、それが1分を完了するために60のフレームかかりますが、携帯電話で、それは必要以上に長い時間がかかり、そうしてくださいので、60のフレーム上で稼働しているPCゲームに今2つのフレーム間の差分であります誰も私にこの問題を解決する方法を教えてもらえますか

+0

修正何を?あなたは文書から何かをコピー/ペーストし、要件を述べますが、質問をすることができず、あなたのためにプログラムを書くと思うようです。 – TomTom

+0

タスク時間に何が起こるはずですか?スクリプトを実行する必要がある場合は、開始時刻を保存して、時刻が経過したかどうかを確認してください。 – Adi

+0

私はあなたがドキュメントを誤解していると思います。 'Time.deltaTime'はゲームのフレームレートを独立させるためのものです。何フレームで実行していても同じ時間がかかります。例えば。 60 fpsで1分のタスクでは3600フレーム、30 fpsでは1800フレームが必要ですが、正確には1分です。 –

答えて

2

何らかの理由でこれまでTime.deltaTimeやこれに類する機能を使用しないでください。 Unityと初心者のため

は、すべてのタイマーおよび時間に関連するすべての問題のために、ちょうど起動

あなたのコードは次のようになります...それは簡単なことだ

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

**覚えて** Invoke **を覚えておいてください。 @paulp – Fattie

+1

ありがとうジョーブロー。 –

関連する問題