c# - Unity getter setter 限制不起作用
问题描述
我正在使用 getter/setter 来限制值。它是 input.deltaPosition.x,玩家可以旋转行星,但我不想让玩家疯狂地滑动手指并将行星旋转 654654321 度。所以我声明了一个变量和getter/setter。但该值仍然采用 650+ 值或负值。
if(touch.phase == TouchPhase.Moved)
{
TouchX = touch.deltaPosition.x;
transform.Rotate(0, yMultiplier * TouchX * Time.deltaTime * planetSpeed, 0, Space.World);
}
这是getter/setter
private float TouchX
{
get { return touchX; }
set
{
if (touchX > 10)
touchX = 10;
else if (touchX < -10)
touchX = -10;
else
touchX = value;
}
}
我做错了什么还是一个错误?
解决方案
除了你没有检查value
你已经发现实际上你的代码可以通过简单地使用来简化很多Mathf.Clamp
private float TouchX
{
get { return touchX; }
set
{
touchX = Mathf.Clamp(value, -10, 10);
}
}
推荐阅读
- flutter - 如何在 Dart. 中读取一个字节?
- reactjs - 使用 useRef addEventListener
- javascript - vue v-for循环内如何显示两个描述值的数组数据?
- python-3.x - Import ValueError:尝试相对导入超出顶级包
- arrays - Vue.js 数组在突变更新后消失
- c# - ASP.NET Core MVC 按钮可见性
- android - 旋转,拖动,放大,缩小Android中的视频和图像
- if-statement - if self.transforms 是什么意思?
- javascript - 无法在后端使用 typescript 的模块外部使用 import 语句
- python - Python - 条件格式谷歌表格 - '电子表格'对象没有属性'add_format'