UE Spinbox 控件支持Double类型及Float精度问题
问题
众所周知,使用float
来表示GIS坐标时,往往由于坐标的有效数字超过7位时,无法表达坐标的小数部分,即精度不够。
方案
1、取区域中心点的局部坐标的形式,使得坐标数值减少到7位有效数字以内。
2、使用double类型来表示坐标值。
UMG SpinBox
UMG SpinBox
作为数值输入,仅能保持单精度浮点数据的精度。不能用来输入大坐标。
如下图所示:同一个数值,使用不同类型来表示的效果。
SpinBox 源码
UMG
Epic Games\UE\Engine\Source\Runtime\UMG\Public\Components\SpinBox.h
Epic Games\UE\Engine\Source\Runtime\UMG\Private\Components\SpinBox.cpp
Slate
Epic Games\UE\Engine\Source\Runtime\Slate\Public\Widgets\Input\SSpinBox.h
通过修改spinbox
源码可以支持double
类型的精度。