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()
实现 Vector3
和 float
,这应该更易读.
如果您将这些值用于任何计算,它会使用具有更高精度 ~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
我需要通过单击"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()
实现 Vector3
和 float
,这应该更易读.
如果您将这些值用于任何计算,它会使用具有更高精度 ~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