Unity 数值太大导致场景加载卡死问题

来源:互联网 发布:搜索不到淘宝店铺 编辑:程序博客网 时间:2024/05/17 20:49

        在项目制作过程中遇到了个很蛋疼的问题——场景加载卡死。这个问题让项目一个同学查了好久都没真正查出来,各种纠结。而且这bug还不是必现的,有时候抽风一下在某台电脑能重现,有时候又一点问题都没有,隔三差五的冒出来刷一点存在感。

        后面安排我一起来查这个问题,可能是那天运气比较好吧,搞了一下午,突然间发现有个gameObject的配置文件数据有很大的问题,它的scale的y值竟然高达e^21 !!!虽然我们项目做的是编辑器,能够对物体进行放大缩小操作,不过这个值绝对也是不正常的,是相关功能的程序员没做最值保底,然后某个操作引起的数值异常并保存到了配置文件中。我们把这个数值改回到正常值后,场景卡死问题果真就没再出现过了。

        不过故事还没结束,大概过了半个月,在发版本的前一天下午,突然出现了摄像机在loading的时候疯狂往下掉的问题,碰撞设置一直没改过,而且也确认了没问题,各种可能的设置也都尝试过了,依然无法解决。

        最后尝试通过二分法来删除副本配置(大几百个对象),一步步终于定位到了某个gameObject,加载完后在Unity的Hierarchy中双击它,竟然无法显示!再看它的Inspector界面大致如下图:

        在Transform下面的面板有个Warning提示,大概意思是:由于浮点数的精度限制,建议把GameObject的世界坐标控制在一个更小的范围内。初看很令人不解啊,只不过小数点后多了几位,不至于这样吧,接下来我们再看一Inspector的拉宽图:

我次噢,y值不是2.3******,竟然是2.316564e+24  !!!与Scale问题如出一辙。

        unity在这方面也是挺坑的,都已经知道有可能产生问题了,却没有任何的提示,只有在Hierarchy中点击到了它,才能看的到警告。而且打出来的包,竟然还出现这么严重的问题,估计是处理数据的那帧发生了异常,导致后续某些关键流程没执行引起的。

        这个问题也已经反馈给Unity官方,希望在以后的版本能修复吧。

原创粉丝点击