using System.Collections.Generic; using UnityEditor; using UnityEngine; using VketCloudGUITools.Runtime; using VketCloudGUITools.Serialization; namespace VketCloudGUITools.Editor { [CustomEditor(typeof(VCText))] public class VCTextInspector : VCGUIItemBehaviourInspector { [SerializeField] private SerializedProperty unityTextProperty; [SerializeField] private SerializedProperty toggleListProperty; private Texture2D _alignHorizontalLeftIcon; private Texture2D _alignHorizontalCenterIcon; private Texture2D _alignHorizontalRightIcon; private Texture2D _alignVerticalTopIcon; private Texture2D _alignVerticalCenterIcon; private Texture2D _alignVerticalBottomIcon; private bool showAdvancedOptions = false; protected override void OnEnable() { base.OnEnable(); unityTextProperty = serializedObject.FindProperty("_unityText"); toggleListProperty = serializedObject.FindProperty("_toggleList"); // ログアイコンの初期化 _alignHorizontalLeftIcon = EditorGUIUtility.IconContent("align_horizontally_left_active").image as Texture2D; _alignHorizontalCenterIcon = EditorGUIUtility.IconContent("align_horizontally_center_active").image as Texture2D; _alignHorizontalRightIcon = EditorGUIUtility.IconContent("align_horizontally_right_active").image as Texture2D; _alignVerticalTopIcon = EditorGUIUtility.IconContent("align_vertically_top_active").image as Texture2D; _alignVerticalCenterIcon = EditorGUIUtility.IconContent("align_vertically_center_active").image as Texture2D; _alignVerticalBottomIcon = EditorGUIUtility.IconContent("align_vertically_bottom_active").image as Texture2D; } public override void OnInspectorGUI() { serializedObject.Update(); DrawPropertyScript(); DrawPropertyVcTransform(); DrawPropertyParentLayer(); EditorGUILayout.PropertyField(unityTextProperty); DrawPropertyVisible(); DrawPropertyToggleList(toggleListProperty); DrawPropertyShow(); DrawPropertyPos(); DrawPropertySize(); DrawPropertyZ(); var vcText = (VCText)target; GUILayout.Label("Text_En"); EditorGUI.BeginChangeCheck(); var textEn = EditorGUILayout.TextArea(vcText.TextEn ?? "",GUILayout.ExpandHeight(true)); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change Text_En"); vcText.TextEn = textEn; } EditorGUI.BeginChangeCheck(); using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.PrefixLabel("Alignment"); int horizontalToolBar = 0; int verticalToolBar = 0; switch (vcText.Alignment) { case ParamTextAlignment.LT: horizontalToolBar = 0; verticalToolBar = 0; break; case ParamTextAlignment.LM: horizontalToolBar = 0; verticalToolBar = 1; break; case ParamTextAlignment.LB: horizontalToolBar = 0; verticalToolBar = 2; break; case ParamTextAlignment.CT: horizontalToolBar = 1; verticalToolBar = 0; break; case ParamTextAlignment.CM: horizontalToolBar = 1; verticalToolBar = 1; break; case ParamTextAlignment.CB: horizontalToolBar = 1; verticalToolBar = 2; break; case ParamTextAlignment.RT: horizontalToolBar = 2; verticalToolBar = 0; break; case ParamTextAlignment.RM: horizontalToolBar = 2; verticalToolBar = 1; break; case ParamTextAlignment.RB: horizontalToolBar = 2; verticalToolBar = 2; break; } var newHorizontalToolbar = GUILayout.Toolbar(horizontalToolBar, new[] { new GUIContent(_alignHorizontalLeftIcon), new GUIContent(_alignHorizontalCenterIcon), new GUIContent(_alignHorizontalRightIcon) }, GUILayout.Width(80), GUILayout.Height(15)); EditorGUILayout.Space(); var newVerticalToolbar = GUILayout.Toolbar(verticalToolBar, new [] { new GUIContent(_alignVerticalTopIcon), new GUIContent(_alignVerticalCenterIcon), new GUIContent(_alignVerticalBottomIcon) }, GUILayout.Width(80), GUILayout.Height(15)); GUILayout.FlexibleSpace(); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change Alignment"); switch (newHorizontalToolbar * 3 + newVerticalToolbar) { case 0: vcText.Alignment = ParamTextAlignment.LT; break; case 1: vcText.Alignment = ParamTextAlignment.LM; break; case 2: vcText.Alignment = ParamTextAlignment.LB; break; case 3: vcText.Alignment = ParamTextAlignment.CT; break; case 4: vcText.Alignment = ParamTextAlignment.CM; break; case 5: vcText.Alignment = ParamTextAlignment.CB; break; case 6: vcText.Alignment = ParamTextAlignment.RT; break; case 7: vcText.Alignment = ParamTextAlignment.RM; break; case 8: vcText.Alignment = ParamTextAlignment.RB; break; } } } EditorGUI.BeginChangeCheck(); var fontFamily = EditorGUILayout.TextField("Font Family",vcText.FontFamily); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change FontFamily"); vcText.FontFamily = fontFamily; } EditorGUILayout.HelpBox("Set the font name specified in CanvasList/FontFamilyList/name.",MessageType.Info); EditorGUI.BeginChangeCheck(); var charaSpace = EditorGUILayout.IntField("Chara Space",vcText.CharaSpace); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change CharaSpace"); vcText.CharaSpace = charaSpace; } EditorGUI.BeginChangeCheck(); var lineSpace = EditorGUILayout.IntField("Line Space",vcText.LineSpace); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change LineSpace"); vcText.LineSpace = lineSpace; } showAdvancedOptions = EditorGUILayout.Foldout(showAdvancedOptions, "Advanced Options"); if (showAdvancedOptions) { EditorGUI.BeginChangeCheck(); var overflowWrap = EditorGUILayout.Toggle("Overflow Wrap", vcText.OverflowWrap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change OverflowWrap"); vcText.OverflowWrap = overflowWrap; } EditorGUI.BeginChangeCheck(); var newURLClickable = EditorGUILayout.Toggle("URL Clickable", vcText.URLClickable); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change URLClickable"); vcText.URLClickable = newURLClickable; } GUILayout.Label("URL Color"); if (vcText.URLColor == null || vcText.URLColor.Count != 4) { if (GUILayout.Button("New")) { Undo.RecordObject(target, "Create URLColor"); vcText.URLColor = new List { 0.0f, 0.0f, 1.0f, 1.0f }; Repaint(); } } else { if (GUILayout.Button("Delete")) { Undo.RecordObject(target, "Delete URLColor"); vcText.URLColor = null; Repaint(); } else { EditorGUI.BeginChangeCheck(); var newURLColor = EditorGUILayout.ColorField("URL Color", new Color(vcText.URLColor[0], vcText.URLColor[1], vcText.URLColor[2], vcText.URLColor[3])); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change URLColor"); vcText.URLColor = new List { newURLColor.r, newURLColor.g, newURLColor.b, newURLColor.a }; } } } } serializedObject.ApplyModifiedProperties(); } } }