一看这个题目,貌似有点无厘头。这有啥可说的,一般不就是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的。