我需要通过单击“ Fire1”按钮来获取mousePosition的显示坐标。脚本非常简单,我得到了我所需要的。但我希望坐标更精确。
public class exmp : MonoBehaviour
{
public void Update()
{
if(Input.GetButtonDown("Fire1"))
{
Debug.Log(Input.mousePosition.x + ", " +Input.mousePosition.y);
}
}
}
目前,我得到的是“ x,y”或“ x.5,y.0”之类的东西,但是对于项目来说,获得诸如“ x.abcd,y.efgh”之类的东西很重要。在某些示例中,我已经看到这是完全可能的,但我不知道如何做到。
谢谢!
答案 0 :(得分:1)
Input.mousePosition
确实返回了具有Vector3
值的float
,尽管它以像素坐标表示,但也返回像素位置之间的值。
无论如何,实际上实际上只有打印到控制台的字符串受到较低精度的影响,因为Unity为ToString()
和Vector3
使用了自定义的float
实现,该实现应该更易于阅读。 / p>
如果您将这些值用于任何计算,它将使用具有更高精度~6-9 digits的纯float
值。
对于打印结帐Standard Numeric Format Strings和Custom Numeric format Strings
您可以例如使用
Debug.Log(Input.mousePosition.x.ToString("0.0000") + ", " + Input.mousePosition.y.ToString("0.0000"));
或使用"Fn"
Debug.Log(Input.mousePosition.x.ToString("F4") + ", " + Input.mousePosition.y.ToString("F4"));
为了显示一个float
值,精度始终为* 4个小数。
您也可以将#
用于可选精度,以便在不需要精度时将其切断,例如为
Debug.Log(1.23001f.ToString("0.00##"));
Debug.Log(1.2301f.ToString("0.00##"));
输出将是
1.23
1.2301