我通过单击鼠标来实例化一个对象。我需要将变换位置 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));
}
}
}
现在,如果一个 obj 在位置 (4.53325, 3.03369, 0) 处实例化,它将被保存为 (4.5,3.0,0)。我想将其位置保存为 (4.53325, 3.03369, 0)。请帮忙谢谢。
作为记录,Debug.Log
烦人的是只打印一位小数。
Do this
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"));
幸运的是,事情就是这么简单。
对于任何读过这篇文章的新程序员来说,这是一个学习的好机会扩展. 快速扩展教程 https://stackoverflow.com/a/35629303/294884.
public static class Handy
{
public static float Say(this GameObject go)
{
Debug.Log(go.name + ", position is ... "
+ go.transform.position.ToString("f3");
}
所以现在你可以这样做...
obj.Say();
...您项目中的任何位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)