using System.Text; using TyphoonGUIStyle; using UnityEditor; using UnityEngine; namespace TyphoonFontTool { [CustomEditor(typeof(FontSourceData))] public class FontSourceDataInspector : Editor { public GUIStyle _characterStyle = null; public GUIStyle CharacterStyle { get { if (_characterStyle == null) { _characterStyle = new GUIStyle(GUI.skin.textArea); } return _characterStyle; } } private FontSourceData Target => target as FontSourceData; private Vector2 _scroll; private string _characterString = null; private string CharacterString { get { if (_characterString == null) { var sb = new StringBuilder(); var codes = Target.Codes; foreach (var code in codes) { var str = char.ConvertFromUtf32(code); sb.Append(str); } _characterString = sb.ToString(); } return _characterString; } } public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.Label("预览字符:", Styles.BoldLabel, GUILayout.Height(24)); var last = GUILayoutUtility.GetLastRect(); var btnRect = last; btnRect.width = 60; btnRect.x = last.xMax - btnRect.width; btnRect.x -= 8; var center = btnRect.center; var draw = btnRect; draw.height -= 8; draw.center = center; if (GUI.Button(draw, "刷新")) { _characterString = null; } if (Target.Font != null) { GUILayout.TextArea(CharacterString, CharacterStyle); } } } }