通过transform.position 得出的Vector3数据为,float型的精确到小数点后面1位,对于精度要求高的项目十分棘手,
1.解决方法:
Vector3 copyPosition = new Vector3(transform.position.x,transform.position.y,transform.position.z);
这样得出的坐标是精确的;可以写个测试类打印一下试试就知道了;
将脚本挂载到3D游戏物体上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test1 : testBase
{
private void OnDrawGizmosSelected()
{
Debug.Log("x===" + transform.position.x+",y==="+transform.position.y+",z==="+transform.position.z);
Debug.Log("===" + transform.position);
}
}
2.解决方法
在某些场景下三维数据需要序列化保存,但在保存和读出的过程中数据精度会丢失。如果项目里对精度要求高就一定要确保精度准确。
思路:就是把原来的数据放大 100000倍保存,调取的时候在除 100000倍 防止flaot数据类型在保存时精度丢失。