Unity3D中float的精度和最大值

本文探讨了Unity中坐标分量的实际限制,并通过实验发现当坐标值达到2的23次方时,Unity会出现警告。文章解释了这是因为Unity并非真正的64位引擎,其Vector3类型的精度限制导致坐标值无法超过100000。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       一看这个题目,貌似有点无厘头。这有啥可说的,一般不就是2的23次方吗?然而,事实上真是这样吗?先做个试验。

       当在场景中新建一个cube,然后把其position的x设置成2的23次方(8388608),unity的编辑器就会出现下图的警告。

       

       具体我就不翻译了。会不会有个疑问,position 是Vector3类型,而它的三个分量x,y,z不都是float的吗?怎么可能支持不了呢?没错!就是支持不了。这是我在stackoverflow上找到的

stackoverflow.com/questions/16879654/unity3d-floating-point-precision-limitations

       其实,只要你翻开Unity对Vector3的定义,就会发现,最顶上有一行

public const float kEpsilon = 1e-005f;

      

            这个值就是10的5次方,100000.再截个图给大家看。



       另外,Unity本身并不是真正的64bit的引擎,否则它的Vector3也不会这么定义。这意味着我们在Unity中,坐标的分量的值是不能超过100000的。



       

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值