UnityEditorunity

[Unity 3d] SetProperty (Inspecto

2019-06-06  本文已影响1人  雨落随风

GitHub 上的工程多如繁星,有些好的仓库,但凡不经意间错过了就很难找回,故稍作采撷,希望能帮助到有心人。
本文集以一个小的功能点为单位行文,也便于拾取罢!

简介:

笔者今天推荐的仓库叫 SetProperty
A PropertyAttribute/PropertyDrawer combination that allows for properties in Unity - 通过属性声明 + 属性绘制 功能将属性拥有的特性移植到 Inspector 的字段输入体验上。

功能:

Unity allows you to serialize private fields with [SerializeField]. Use the new [SetProperty] attribute to have a public property set every time the field is modified in Unity's inspector.
通过在字段之上声明:[SetProperty("指定的属性")] 属性,可以在 Inspector 输入框每次输入完成之后进行断言和修正(属性特性)。

演示:

通过指明 属性的 名称,即能在Inspector 输入框输入时对输入的值进行必要的修正。

[SerializeField, SetProperty("Number")] 
private float number;
public float Number
{
    get
    {
        return number;
    }
    private set
    {
        number = Mathf.Clamp01(value);
    }
}

演示内容:

1.演示将数值限制在0-1
2.演示将输入的小写字母转大写
3.演示枚举
4.演示 类中类/非Mono类


链接

LMNRY/SetProperty: A PropertyAttribute/PropertyDrawer combination that allows for properties in Unity

结语:

这个组件提供了一个非常不错的:字段断言,修正和Inspector调方法做API测试的解决方案(亦即将属性特性搬上了Inspector)。虽然它的实现仅仅一个反射而已,达到的效果却是非常入人意中啊。

本文集持续更新ing

上一篇下一篇

猜你喜欢

热点阅读