作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道我是否在 update()
做的事情太多了结果是帧率低于目标帧率。但是如果我在 fixedUpdate()
中做同样的事情会发生什么?
它会导致 Unity 的物理引擎困惑,还是会导致程序崩溃?
最佳答案
答案和评论非常有帮助,但它们缺乏对我的问题的清晰、翔实的答案。每个人都知道当你在 FixedUpdate()
中投入太多工作量时会发生不好的事情。循环,我的问题是问那时会发生什么坏事。
由于我终于掌握了计算机,因此我决定自己进行一些测试。仅供引用,这是我用来测试的:
public class TestFixedUpdate : MonoBehaviour {
public int loopNo = 500000;
private int noOfCall = 0;
private int collisionTimes = 0;
private void FixedUpdate()
{
if (noOfCall > 100) return;
float time = Time.timeSinceLevelLoad;
for (int i = 0; i < loopNo; i++) {
Quaternion.Slerp(Quaternion.identity, Quaternion.FromToRotation(Vector3.up, Vector3.forward), Mathf.Abs(Mathf.Sin(Time.timeSinceLevelLoad)));
}
Debug.Log(Time.timeSinceLevelLoad.ToString("0.00"));
if (noOfCall > 99) Debug.Log("Simulation finished. Times collided:" + collisionTimes);
noOfCall++;
}
private void OnCollisionEnter(Collision collision)
{
if (noOfCall > 100) return;
collisionTimes++;
Debug.Log("Times collided:" + collisionTimes);
}
}
FixedUpdate()
更改来进行的。和
Update()
并比较差异。
FixedUpdate()
, Unity 的模拟
Time
(游戏世界的时间)与实际时间不同步。换句话说,任何依赖于 Unity 的
Time
的函数系统将表现得好像整个世界都放慢了速度。
FixedUpdate()
,Unity 报告两种情况的帧速率相同在这种情况下,实际帧速率——现实世界每秒的帧数——显然要低得多。 Maximum Allowed Timestep
项目设置中的选项定义了必须绘制帧之前的最大(Unity 模拟时间)数量(我以前不知道它是做什么用的)。说明:如果我将它设置为 0.5 秒,那么无论我在两个函数中放入多少代码,逻辑更新步骤( Update()
)都会在 FixedUpdate()
之后立即调用round 模拟了第 0.5 秒,然后将渲染场景。 关于unity3d - 在fixedUpdate() 中做繁重工作的后果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273726/
我是一名优秀的程序员,十分优秀!