Input.mousePosition 小数点精度为 4-5 位?

Input.mousePosition with 4-5 digits of decimal precision?

我需要通过单击"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" 这样的东西。在一些示例中,我已经看到这是很有可能的,但我不知道如何实现。

提前致谢!

Input.mousePosition 确实 returns 具有 float 值的 Vector3,尽管它在 pixel-coordinates 中,但也在 returns 像素位置之间。

无论如何,实际上只有打印到控制台的字符串受到较低精度的影响,因为 Unity 使用自定义 ToString() 实现 Vector3float,这应该更易读.

如果您将这些值用于任何计算,它会使用具有更高精度 ~6-9 digits.

的纯 float

用于打印结帐Standard Numeric Format Strings and 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