属性
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; [AttributeUsage(AttributeTargets.Field, Inherited = true)] public class LanguageLabelAttribute : PropertyAttribute { }
绘制
using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; [CustomPropertyDrawer(typeof(LanguageLabelAttribute))] public class LanguageLabelPropertyDrawer : PropertyDrawer { private static readonly string errorLanguageKeyTips = "语言表 Key 不存在"; public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { var key = property.stringValue; //var content = !LanguageConfig.Has(key) ? errorLanguageKeyTips : Language.Get(key); var content = "哈哈哈"; var propertyWidth = position.width / 4 * 3; var singleWidth = position.width / 4; EditorGUI.BeginProperty(position, label, property); var rect = new Rect(position.x, position.y, propertyWidth, position.height); EditorGUI.PropertyField(rect, property); EditorGUI.EndProperty(); rect = new Rect(rect.xMax, rect.y, singleWidth, rect.height); using (new EditorGUI.DisabledScope(true)) { EditorGUI.TextField(rect, content); } } }
使用
[LanguageLabelAttribute] public string str;
效果