虽然对于程序来说,一般习惯用英文命名,但有时身在公司,总是需要和策划协作的,他们可能看不懂一些英文变量,所以为了方便交流,我抽空研究了下Unity属性面板中文化的问题。

有两种方法可以实现中文属性名:

1.使用Unity内置的HeaderAttribute

[Header("这是Header命名")]
public bool testHeader;

在字段上方这样书写代码,编译成功后我们可以在Unity属性面板观察到

2.自定义Attribute
首先,我们先来说下Attribute这个东西。

.Net 框架允许创建自定义特性,用于存储声明性的信息,且可在运行时被检索。该信息根据设计标准和应用程序需要,可与任何目标元素相关。

创建并使用自定义特性包含四个步骤:

  • A.声明自定义特性
  • B.构建自定义特性
  • C.在目标程序元素上应用自定义特性
  • D.访问特性

遵循上述步骤,我们先来声明自定义特性,名为RenameAttribute:

[AttributeUsage(AttributeTargets.Field)]   //指定为字段使用
public class RenameAttribute : PropertyAttribute    //需要继承Unity的PropertyAttribute,以便于实现Unity的某些特性
需要注意的是,一个新的自定义特性应派生自 System.Attribute 类。

然后我们来构建RenameAttribute:

我们的 RenameAttribute 类将一个用于存储中文名字的公有属性(property)。

每个特性必须至少有一个构造函数。

[AttributeUsage(AttributeTargets.Field)]
public class RenameAttribute : PropertyAttribute
{//用来显示中文的字符串public string name;public RenameAttribute(string name){this.name = name;}
}

现在我们已经写好了RenameAttribute,我们的目的是显示中文属性,所以要再Inspector面板重新绘制该特性:

[CustomPropertyDrawer(typeof(RenameAttribute))] //用到RenameAttribute的地方都会被重绘
public class RenameDrawer : PropertyDrawer //相对于Editor类可以修改MonoBehaviour的外观,我们可以简单的理解PropertyDrawer为修改struct/class的外观的Editor类
{public override void OnGUI(Rect position, SerializedProperty property, GUIContent label){//替换属性名称RenameAttribute rename = (RenameAttribute)attribute;label.text = rename.name;//重绘GUIEditorGUI.PropertyField(position, property, label);}}

接下来我们把RenameAtrribute放在要重命名的字段前,就可以应用它了

[Header("这是Header命名")]
public bool testHeader;
[Rename("自定义命名")]
public int test;

大功告成!

Unity面板显示中文属性相关推荐

  1. Unity中显示中文属性(汉化你的Inspector)

    汉化效果 利用Attribute可以自定义一些属性,实现汉化: 用法示例 TitleTest.cs using UnityEngine; using UnityEngine.Events;[Syste ...

  2. 【工具篇】SerializableDictionary字典序列化Unity面板显示

    目录 一:导入插件 二:创建目标字典类 三:生成数据 四:自定义配置数据 Unity本身对字典这种数据结构没有序列化处理的,在实际开发过程中如果我们需要实时查看字典内部数据或者需要配置字典这种类型的本 ...

  3. Unity Text显示中文

    1.复制文字到图中地址 2.右击导入的字体,生成  fontAsset 3.即可以在fontasset中找到对应的字体.

  4. 【Unity】Unity面板上高级显示,例如显示中文

    在Unity编辑界面上显示中文 https://blog.csdn.net/keren2/article/details/83021919 这段代码和工程中的其他代码放一起,一般情况下是放在Asset ...

  5. unity中text显示中文乱码问题

    在本地c盘--windows--fonts中找一款字体复制(最好找那种不禁止商用的字体) 回到unity项目中,粘贴进Assets中的TextMeshPro-Fonts,(或者直接拖入Assets中, ...

  6. VS Code 下载安装并设置中文面板显示

    下载: 下载地址:https://code.visualstudio.com/ 微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 M ...

  7. Unity中TextMeshPro显示中文

    首先在unity上方的导航栏中找到Windows点击在下拉栏中选择TextMeshPro里的Font Asset Creator来创建一个中文字体资源,选择一个Source Font File(可以通 ...

  8. 【转】unity 的 MonoDevelop 在Windows下显示中文不出现乱码

    怎么才能让MonoDevelop 在Windows下显示中文- Unity原生技术 我是在 PC 机上, 用以下方法解决了. 以下来自链接中的内容: 包括mac 在内显示中文乱码主要有两种原因, 一种 ...

  9. Altium AD20批量修改丝印大小、更改丝印字体、丝印显示中文、更改位号丝印 相对元件的位置

    AD默认的丝印不大美观,那么多位号的丝印,想一个个单个去修改显得不现实.这里借助全局批量修改,快速更改丝印的字体.大小.显示中文.相对元件位置. AD20批量修改丝印大小.字体 选中其中一个丝印,右键 ...

最新文章

  1. python - 面向对象(二)
  2. IOS 总结:NSArray,NSSet,NSDictionary
  3. 全球 Top 10 高材生赴神策数据的交流访问之旅
  4. java 安卓 html_java – Android的HtmlUnit替代品?
  5. 如何将一个目录下的所有文件,合并成一个文件
  6. 细腻剖析2010年3月四级网络工程师试卷解题思路
  7. c oracle代码,实现单一源代码 - Oracle® Developer Studio 12.5:C 用户指南
  8. 【Elasticsearch】ES 5.6.4源码解析---translog
  9. iPhone 竟没人要了?
  10. haproxy配置代理tomcat和nginx_Nginx负载均衡配置实例
  11. python工资一般多少西安-Python面试经验分享——西安贝业思数据
  12. GPT-J 自然语言处理 AI 模型
  13. 两列float引起的父容器高度失效的解决办法
  14. 【QA】哈工大张伟男:任务型对话系统
  15. jQuery.proxy用法
  16. Spring的核心思想,依赖注入
  17. ActiveX控件dsoFramer的使用(word、excel、PPT)
  18. Canvas 实现小程序动画
  19. 文件太大打不开,可以使用LogViewer
  20. 商城项目实战32:商品详情页实现

热门文章

  1. 指针详解(包含指针,指针数组,数组指针,指向数组指针的指针,函数指针,函数指针数组,指向函数指针数组的指针)
  2. centos(7.9) minikube(v1.28.0) kaniko 构建镜像
  3. Html5网页播放器的同层播放功能
  4. FP-growth:从FP树中挖掘频繁项集
  5. The underlying provider failed on Open
  6. 人像摆姿参考--西野七瀬(1)
  7. AT89S51单片机硬件结构
  8. Futuremark 3DMark 2.17.7137,3DMark兼容性强大
  9. 影响中国I软件开发的二十人
  10. 360全景拍摄教程:鱼眼全景图拍摄方法