首页 > 解决方案 > 如何获取和设置 Range 属性的最小值和最大值?

问题描述

[Range(-3, 3)]
public float range;

我希望稍后在代码中执行以下操作:

range.min = 2 
range.max = 20;

或者得到

int min = range.min;
int max = range.max;

标签: c#unity3d

解决方案


不能在运行时更改属性的状态,但可以使用反射读取它:

class YourClass
{
    [Range(-3, 3)]
    public float range;
}

var range = typeof(YourClass)
    .GetField(nameof(YourClass.range))
    .GetCustomAttribute<RangeAttribute>();

float min = range.min;
float max = range.max;

基于:https ://github.com/jamesjlinden/unity-decompiled/blob/master/UnityEngine/UnityEngine/RangeAttribute.cs


推荐阅读