3

Unity3Dを使用して、迷路を設計した「実験」(大学関連)を設定しています。ユーザーは、14ミリ秒だけ表示されてから消えるサブリミナルキュー(画面に表示される視覚的な矢印)を受け取ります。

私はすでに3D迷路を設計しましたが、それは本当に最小限です(実験のために特別なものは必要ありません)。したがって、一人称コントローラーを使用してナビゲートすると、1000 fpsを達成できます(フレームレートは問題になりません)。一部のオブジェクトがトリガーされたときにこれらの矢印を表示するように、C#でスクリプトをプログラムすることを計画しています。

Unityで、オブジェクトを数ミリ秒(私の場合は14ミリ秒)だけ許容できる精度で表示できるかどうか疑問に思っています...もしそうなら、どのアプローチを使用すればよいですか?同様の問題に関するアイデアや以前の経験はありますか?

前もって感謝します

4

2 に答える 2

5

コルーチンを使用して、オブジェクトを一定時間表示します。

void *AnyTrigger*() // eg. replace with OnTriggerEnter if using triggers
{
    StartCoroutine(ShowObject(14f / 1000f));
}

IEnumerator ShowObject(float timeInSeconds)
{
    // Show object here
    yield return new WaitForSeconds(timeInSeconds);
    // Hide object
}

正確さ

オブジェクトが表示される時間の正確さは、使用しているシステムに大きく依存します。高速システムでUnity3Dを実行している場合は、非常に正確である可能性があります。システムが遅い場合、時間は14msを超える可能性が非常に高くなります。

例(正確ではありません):

  • 高速システム、毎秒950〜1000フレーム:0ms〜1msのLikly
  • ミディアムシステム、毎秒300〜600フレーム:0.8ms〜3.6ms
  • 低速システム、毎秒50〜100フレーム:5ミリ秒から20ミリ秒の間
于 2012-10-18T10:46:06.947 に答える
1

System.Diagnostics.Stopwatchタイミングにも使えます。

http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

Unityの内部時間管理ではなく、OS時間で進行するため、より正確な場合があります

IEnumerator ShowObject(float timeInSeconds) {
    var stopwatch = new System.Diagnostics.Stopwatch();
    // Show object here
    stopwatch.Start();
    while (stopwatch.ElapsedMilliseconds < 14) {
        yield return null;
    }
    // Hide object
    stopwatch.Stop();
}
于 2012-10-18T18:55:06.480 に答える