在 Unity 中如何使公共浮点数或 int 变量不能被用户输入负数

Joe*_*eyL 0 c# unity-game-engine

我目前正在将一些资产放入 Unity 资产商店,并且正在查看用户为公共变量的输入所犯的错误。其中之一是他们能够选择相机的宽度和高度,我不希望他们选择输入负数。我能找到的最接近的东西是 [Range(x,y)] 但这将我在检查器中的变量输入更改为我不想要的滑块。

我知道我总是可以通过代码检查它是否为负,然后通过调试告诉用户,但我觉得如果我什至不让用户将负数放在首位,这将节省检查和更少的代码。

任何人都有任何想法,或者我基本上坚持检查并通过调试让他们知道?

pio*_*ojo 6

OnValidate是为此目的创建的 MonoBehaviour 函数。正如文档所说:“这可用于确保当您在编辑器中修改数据时,数据保持在一定范围内。” 在你的脚本中,写

OnValidate()
{
    theValue = Mathf.Clamp(theValue, 0, float.MaxValue); // or int.MaxValue, if you need to use an int but can't use uint.
}
Run Code Online (Sandbox Code Playgroud)