C#是支持中文变量命名的,最起码我是不会用的。
原因有二:1、太LOW了 ,2、可能还会存在着莫名其妙的异常。
所以能在Unity的Inspector面板看到中文,会感到那么一丝丝的亲切感。。。
话不多说 先看效果!!!
using UnityEngine;
public class LableTest : MonoBehaviour {
//公有变量直接显示“hello”
public string hello = "";
//在变量名之前加“[Label("名字")]”之后
//代码中还使用Name 但是inspector显示“名字”
[Label("名字")]
public string Name = "name";
//[SerializeField]的作用是在Inspector面板显示私有变量
[SerializeField, Label("年龄")]
private int age = 18;
}
实现过程主要是在项目当中添加这两个脚本
using UnityEngine;
public class LabelAttribute:PropertyAttribute
{
private string name = "";
public string Name { get { return name; } }
public LabelAttribute(string name)
{
this.name = name;
}
}
using UnityEngine;
using UnityEditor;
[CustomPropertyDrawer(typeof(LabelAttribute))]
public class LabelAttributeDrawer:PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
LabelAttribute attr = attribute as LabelAttribute;
if(attr.Name.Length > 0)
{
label.text = attr.Name;
}
EditorGUI.PropertyField(position, property, label);
}
}