Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Unity3D中显示对象几毫秒_C#_Unity3d - Fatal编程技术网

C# 在Unity3D中显示对象几毫秒

C# 在Unity3D中显示对象几毫秒,c#,unity3d,C#,Unity3d,我正在使用Unity3D设置一个“实验”(与大学相关),在这个实验中,我设计了一个迷宫,用户接收到的潜意识提示(屏幕上显示的视觉箭头)应该只出现14毫秒,然后消失 我已经设计了3D迷宫,它真的很小(我不需要任何花哨的实验),因此当我使用第一人称控制器导航到它时,我可以达到1000fps(帧速率不会有问题)。我计划用C语言编写一个脚本,在触发某些对象时显示这些箭头 我想知道在Unity中是否有可能以可接受的精度显示几毫秒(在我的例子中是14毫秒)的对象。。。如果是,我应该使用哪种方法?有没有类似问

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

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

我想知道在Unity中是否有可能以可接受的精度显示几毫秒(在我的例子中是14毫秒)的对象。。。如果是,我应该使用哪种方法?有没有类似问题的想法或经验


提前感谢

使用协同程序只需一段时间即可显示对象:

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帧:可能在0到1毫秒之间
  • 中等系统,每秒300-600帧:可能介于0.8毫秒和3.6毫秒之间
  • 慢速系统,每秒50-100帧:可能在5到20毫秒之间

您也可以使用
系统、诊断、秒表来计时

它可能更准确,因为它是按操作系统时间进行的,而不是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();
}
IEnumerator ShowObject(浮点时间分段){
var stopwatch=new System.Diagnostics.stopwatch();
//在此处显示对象
秒表。开始();
while(秒表时间延迟毫秒<14){
收益返回空;
}
//隐藏对象
秒表;
}

感谢您的回答:您认为该对象的显示时间是否准确?(例如,帧丢失,因此在某些周期内无法显示对象)@Albz不,它不会100%准确,我在回答中添加了更多信息。我不认为Unity没有使用系统时间!Unity使用内部计时,可以偏离系统时间。这就是为什么他们的Time.timeScale变量会降低游戏速度。此外,垃圾收集之类的事情可能会导致引擎暂时暂停,并使其时间与系统时间略有偏移。不过,unity必须渲染帧,因此与使用unity的内置时间系统相比,差异其实并不重要。