Unity自定义Inspector属性名特性以及特性自定义布局问题
创作时间:
作者:
@小白创作中心
Unity自定义Inspector属性名特性以及特性自定义布局问题
引用
CSDN
1.
https://m.blog.csdn.net/m0_68267247/article/details/144749497
在Unity开发中,Inspector面板的属性名默认显示为英文,这对于中文开发者来说不够友好。本文将介绍如何通过自定义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;
}
}
经过优化后的效果如下图所示:
热门推荐
什么是黎曼和?什么是定积分?
Arduino教程:MPU6050的数据获取、分析与处理
赣州市美食前十名:探寻客家风味,品味赣州地道佳肴
优秀品牌LOGO设计的五大要素
口唇干裂是什么原因
2025版糖尿病指南推荐7种中成药,详解其功效与作用机制
约基奇和亚历山大谁是MVP?5万球迷投票结果:差距不是一般的大
VGGNet:深度学习中的卷积神经网络经典之作
酵母粉使用全攻略:四大关键点助你做出完美面食
服务器硬盘的常见故障及解决方法
生涯4次夺得MVP有多难?历史仅4人做到,约基奇有望成下一个
钢化炉中的淬火介质如何选择?
Excel的FILTER函数和IFERROR函数入门指南
自闭症的孩子学乐器:赋予他们无限可能
唐代使用什么纽扣?揭秘唐代服饰的独特扣饰
304不锈钢和410不锈钢的区别:从成分到应用领域的全面解析
病假医院证明申请指南
晋升答辩时被同事质疑,如何打破困局?
腰疼?尿急?尿痛?可能是肾结石!预防结石,记住六条黄金法则!
城市通勤新选择?上班族怎么选择自行车
作家洪绍乾诗学探索引学界关注:解构与重构中的存在主义诗学
日本应对老龄化社会:制度建设、产业发展与供需矛盾
长崎爽世:温柔外表下的复杂内心
探索图像处理、计算机视觉和机器视觉
投入全部身家,他把濒临倒闭的酒厂做成“台州茅台”
“那咋了”,年轻人拒绝摆烂后的内心自洽
K8S是什么,K8S有什么组件和功能特点
零基础两月备战半马:科学训练与心理准备指南
刚过40岁,为什么就长“老年斑”了?
香港公司投资大陆企业的税收政策全解析:机遇与挑战