在Unity3D中显示一个对象几毫秒

我正在使用Unity3D来设置一个“实验”(大学相关),我设计了一个迷宫,用户接收潜意识提示(屏幕上显示的可视箭头),它应该只显示14毫秒然后消失。

我已经设计了3D迷宫并且它真的很小(我不需要任何花哨的实验),因此当我用第一人称控制器导航时我可以达到1000fps(帧速率不会有问题)。 我打算用C#编写脚本,以便在触发某些对象时显示这些箭头。

我想知道在Unity中是否可以只用几毫秒(在我的情况下,14ms)显示具有可接受精度的对象……如果是这样,我应该使用哪种方法? 有类似问题的任何想法或以前的经验吗?

先感谢您

使用协程只显示一段时间的对象:

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,它可能非常准确。 如果系统很慢,那么时间非常可能超过14毫秒。

示例(不准确):

  • 快速系统,每秒950-1000帧:在0ms和1ms之间
  • 中型系统,每秒300-600帧:在0.8ms到3.6ms之间
  • 慢速系统,每秒50-100帧:在5ms到20ms之间

您也可以使用System.Diagnostics.Stopwatch来计算时间。

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

可能更准确,因为它是通过OS时间而不是Unity的内部时间保持。

 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(); }