当前位置: 首页 > article >正文

Unity自定义Inspector属性名特性以及特性自定义布局问题

前言:

在Unity中编辑属性的适合,一般都是显示属性的英文,如果想要改成中文的话又不能改变属性名,那么自定义特性是很好的选择。

一、自定以特性

这一块没有什么要多说的,就是自定义特性

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

public class FieldNameAttribute : PropertyAttribute
{
    internal string Name { get; private set; }
    public FieldNameAttribute(string name)
    {
        Name = name;
    }
}
#if UNITY_EDITOR
[CustomPropertyDrawer(typeof(FieldNameAttribute))]
public class FieldNameAttributeDrawer : PropertyDrawer
{
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        EditorGUI.PropertyField(position, property, new GUIContent((attribute as FieldNameAttribute).Name), property.hasChildren);
    }
}
#endif

二、布局问题

这样写其实以及完成了效果,如图:

问题一目了然是吧,虽然定义了属性,但我们没有处理其可见子元素的布局

我们只要重写PropertyDrawer中的GetPropertyHeight函数即可

public class FieldNameAttributeDrawer : PropertyDrawer
{
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        EditorGUI.PropertyField(position, property, new GUIContent((attribute as FieldNameAttribute).Name), property.hasChildren);
    }
    public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
    {
        float baseHeight = base.GetPropertyHeight(property, label);
        if (property.isExpanded)
        {
            if (property.propertyType == SerializedPropertyType.Generic)
            {
                return baseHeight + EditorGUIUtility.singleLineHeight * property.CountInProperty();
            }
        }
        return baseHeight;
    }

}

如图:


http://www.kler.cn/a/453456.html

相关文章:

  • python中os.path.isdir()问题
  • 本原多项式
  • Eclipse常用快捷键详解
  • Playwright爬虫xpath获取技巧
  • 边缘计算收益稳定
  • 每天40分玩转Django:Django静态文件
  • 散户应该持有哪些代币?
  • 计算机网络 (8)物理层的传输方式
  • HashMap源码深度解析(JDK 1.8)
  • 鸿蒙项目云捐助第二十二讲云捐助项目物联网IoT鸿蒙端的代码实现
  • C 实现植物大战僵尸(一)
  • Mysql 查询性能调优总结
  • PyQt5 学习方法之悟道
  • FPGA实时红外相机采集输出系统,提供工程源码和技术支持
  • 大模型Weekly|月之暗面发布Kimi视觉思考模型 k1;谷歌发布最新视频生成模型Veo 2
  • HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据
  • SpringCloudAlibaba技术栈-Dubbo
  • kubernetes Gateway API-部署和基础配置
  • 【gulp】gulp 的基本使用
  • 从数据仓库到数据中台再到数据飞轮:电信行业的数据技术进化史
  • 质数生成函数、质数判断备份
  • <论文>语言模型可以进行无监督的多任务学习?
  • 从源码到应用:在线问诊系统与医疗陪诊APP的开发全过程详解
  • 12.26 学习卷积神经网路(CNN)
  • npm淘宝镜像
  • Dilateformer实战:使用Dilateformer实现图像分类任务(二)