首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取和设置Range属性min和max?

如何获取和设置Range属性min和max?
EN

Stack Overflow用户
提问于 2020-06-23 20:40:11
回答 2查看 1.7K关注 0票数 1
代码语言:javascript
运行
复制
[Range(-3, 3)]
public float range;

我希望稍后在代码中做一些类似的事情:

代码语言:javascript
运行
复制
range.min = 2 
range.max = 20;

或者获取

代码语言:javascript
运行
复制
int min = range.min;
int max = range.max;
EN

回答 2

Stack Overflow用户

发布于 2020-06-23 20:54:38

你可以反射,但是你可以使用can't change an attribute's state at runtime来读取它:

代码语言:javascript
运行
复制
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

票数 4
EN

Stack Overflow用户

发布于 2020-06-23 21:54:40

你能把它改成像下面这样的对象吗?

代码语言:javascript
运行
复制
public class range
{
    private float _value;
    public range(int min, int max)
    {
        Min = min;
        Max = max;
    }


    public float Value
    {
        get
        {
            return _value;
        }
        set
        {
            if (value > Max || value < Min) throw new Exception("value out of 
               range.");
            _value = value;
        }
    }

    public int Min { get; }

    public int Max { get; }

}

像这样使用它;

代码语言:javascript
运行
复制
rangeObj = new range(-3,3);
rangeObj.Min
rangeObj.Max
rangeObj.Value
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62534949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档