美文网首页
Unity解决对象显示抖动的问题

Unity解决对象显示抖动的问题

作者: iqxtreme | 来源:发表于2020-05-21 12:31 被阅读0次

    问题背景

    • 通过Update方法同步对象A到对象B的Transform,如下:
    // in object a
    void Update()
    {
        a.transform.position = b.transform.position;
    }
    
    • 运行时发现,对象A并不紧随对象B,总差一点儿,而且还抖动(虚影),对象B移动速度(幅度)越大,此现象越明显。

    问题解析

    • Unity有个主循环,一直在更新物体位置,然后渲染物体。
    • 如果在一次循环中,先更新B的Transform,再执行A和B的同步,那么结果会很完美。
    • 如果先执行A和B的同步,然后又更新B的Transform,然后再渲染物体,显然A和B不在同一个位置,A就会出现抖动现象。

    解决方案

    • 首先了解Unity的系统事件执行顺序。

    https://www.jianshu.com/p/21ac16f190cf

    • 可发现几个更新事件按顺序为:FixedUpdate()->Update()->LateUpdate()。
    • 各个事件之间间隔诸多可能改变transform的处理过程。
    • 最后为LateUpdate()事件,并且之后就是OnWillRenderObject(),要进行渲染了。
    • 因此“将与最终渲染效果有关系的代码放在LateUpdate()事件中会得到比较稳定的渲染结果,比如同步对象的transform。

    相关文章

      网友评论

          本文标题:Unity解决对象显示抖动的问题

          本文链接:https://www.haomeiwen.com/subject/nhjzohtx.html