【Unity】自定义字段在Inspector中显示的名称

【Unity】使字段在Inspector中显示自定义的名称

默认情况下Unity会将字段的名称首字母大写后显示在Inspector面板上,这里通过自定义 PropertyAttributePropertyDrawer 的方式实现了使字段在Inspector面板中显示自定义的名称。自定义的特性可以用于 public 字段,也可以配合 SerializeField 特性作用于 private 字段。

首先实现一个 CustomLabelAttribute 特性,这个特性中包含一个 string 类型的 name 字段,用于指定自定义的字段名称。代码如下:

using UnityEngine;

/// <summary>
/// 使字段在Inspector中显示自定义的名称。
/// </summary>
public class CustomLabelAttribute : PropertyAttribute
{
    public string name;

    /// <summary>
    /// 使字段在Inspector中显示自定义的名称。
    /// </summary>
    /// <param name="name">自定义名称</param>
    public CustomLabelAttribute(string name)
    {
        this.name = name;
    }
}

然后实现一个 CustomLabelDrawer 类,该类中定义了对带有 CustomLabelAttribute 特性的字段的面板内容的绘制行为。需要注意的是, CustomLabelDrawer 类的代码文件应该放到 Editor 文件夹下。代码如下:

using UnityEditor;
using UnityEngine;

/// <summary>
/// 定义对带有 `CustomLabelAttribute` 特性的字段的面板内容的绘制行为。
/// </summary>
[CustomPropertyDrawer(typeof(CustomLabelAttribute))]
public class CustomLabelDrawer: PropertyDrawer
{
    private GUIContent _label = null;
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        if (_label == null)
        {
            string name = (attribute as CustomLabelAttribute).name;
            _label = new GUIContent(name);
        }

        EditorGUI.PropertyField(position, property, _label);
    }
}

实现了 CustomLabelAttribute 类和 CustomLabelDrawer 类之后,为字段添加 CustomLabel 特性,并在参数中传入要显示的自定义字段名,即可使字段在Inspector中显示自定义的名称。如下图:

效果图

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值