C# 获取一个对象的位置,单位为小数点后3位

C# 获取一个对象的位置,单位为小数点后3位,c#,unity3d,C#,Unity3d,我通过鼠标点击实例化一个对象。我需要得到变换位置x和y的小数点后3位。这是我的密码 void OnMouseDown() { ray=Camera.main.ScreenPointToRay(Input.mousePosition); if(Physics.Raycast(ray,out hit)) { if(Input.GetKey(KeyCode.Mouse0)) {

我通过鼠标点击实例化一个对象。我需要得到变换位置x和y的小数点后3位。这是我的密码

void OnMouseDown()
    {
        ray=Camera.main.ScreenPointToRay(Input.mousePosition);

        if(Physics.Raycast(ray,out hit))
        {

            if(Input.GetKey(KeyCode.Mouse0))
            {
                GameObject obj=Instantiate(prefab,new Vector3(hit.point.x,hit.point.y,hit.point.z), Quaternion.identity) as GameObject;
                OrbsList.Add(new Vector3(obj.transform.position.x,obj.transform.position.y,0));
            }

        }
    }

现在,如果在位置(4.53325,3.03369,0)实例化obj,它将保存为(4.5,3.0,0)。我想把它的位置保存为(4.53325,3.03369,0)。请帮助,谢谢。

对于记录,
Debug.Log
只打印了一位小数,这让人恼火

这样做

Vector3 pos = obj.transform.position;
Debug.Log("pos x is now " + pos.x.ToString("f3"));
Debug.Log("pos y is now " + pos.y.ToString("f3"));
Debug.Log("pos z is now " + pos.z.ToString("f3"));
但是注意

有个好消息:Unity明智地在Vector3中添加了“ToString”。所以,你可以这样做:

Vector3 pos = obj.transform.position;
Debug.Log("pos is now " + pos.ToString("f3"));
幸运的是这很容易


对于任何一位新程序员来说,这是学习扩展的绝佳机会

所以现在你可以这样做了

 obj.Say();

…项目中的任何位置。

它保存在您希望的位置,只是简化了显示。@Everts哦,您是对的。我刚刚把x和y转换成字符串,它们显示的是精确的位置,而不是四舍五入。谢谢,我现在觉得很愚蠢小心,浮点的精度有限,这里使用的值足够精确,一旦在计算中使用它们,就不会显示所需的结果。
 obj.Say();