近期在做游戏移植,把部分Unity的代码移植到laya上,发现laya上的表现跟Unity上有差异,
debug了一番,最终找到可疑点,代码实现大致是函数内使用三次Random.Range,随机出
三个值,做为Vector3的构造参数传入(new Vector3(值1,值2,值3)),然后返回Vector3,
在c#中通过Debug.LogError打印返回的Vector3,打印出来的结果不符合预期,于是写了段
测试代码,代码和运行结果如下图:
代码
结果
预期结果是-0.1到0.1之间的小数,实际打印出来的结果却不是
单独打印value1,value2,value3的值却是符合预期,
如果不知道有这回事,平时开发中很容易被输出的数据误导,
那这究竟是怎么回事?
首先,Vector3作为一个Struct,构造函数接收三个浮点类型的参数,内部实现应该是直接存起来而不会做任何修改,
为证实这一点,我们反编译下源代码看看(不懂的可看