using System.Collections.Generic; using UnityEditor; using UnityEngine; using System.IO; using TMPro; using UnityEngine.UI; using BF; using System; using UnityEngine.TextCore.LowLevel; using System.Text; namespace BFEditor.Resource { public class LocalizeInputWindow : EditorWindow { private Func onClose; public static LocalizeInputWindow Instance = null; public LocalizeInputWindow() { Instance = this; } [SerializeField] public string key; [SerializeField] public List paramList = new List(); [SerializeField] public string msg; [SerializeField] public bool ignoreValueCheck; [SerializeField] public bool addlocalize; private SerializedObject obj; private SerializedProperty keyProperty; private SerializedProperty paramListProperty; private SerializedProperty msgProperty; private SerializedProperty ignoreValueCheckProperty; private SerializedProperty addlocalizeProperty; private GUIStyle msgStyle = new GUIStyle(); static public void Init(Func onClose) { GetWindowWithRect(typeof(LocalizeInputWindow), new Rect(Screen.width / 2, Screen.height / 2, 800, 800)); Instance.onClose = onClose; } private void Awake() { if (null == obj) obj = new SerializedObject(this); keyProperty = obj.FindProperty("key"); paramListProperty = obj.FindProperty("paramList"); msgProperty = obj.FindProperty("msg"); ignoreValueCheckProperty = obj.FindProperty("ignoreValueCheck"); addlocalizeProperty = obj.FindProperty("addlocalize"); msgStyle.fontSize = 30; msgStyle.normal.textColor = Color.red; msgStyle.alignment = TextAnchor.MiddleCenter; } private void OnGUI() { obj.Update(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(keyProperty); EditorGUILayout.PropertyField(paramListProperty, true); ignoreValueCheckProperty.boolValue = EditorGUILayout.Toggle("忽略值检查", ignoreValueCheckProperty.boolValue); // addlocalizeProperty.boolValue = EditorGUILayout.Toggle("是否添加Localize组件", addlocalizeProperty.boolValue); //Debug.Log(ignoreValueCheckProperty.boolValue); if (GUILayout.Button("确定")) { if (null != onClose) { key = key.ToUpper(); string msg = onClose(key, paramList.ToArray(), ignoreValueCheckProperty.boolValue, /*addlocalizeProperty.boolValue*/false); if (msg.Equals("success")) Close(); else ShowMsg(msg); } return; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(msgProperty.stringValue, msgStyle); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck() && null != obj) obj.ApplyModifiedProperties(); } private void Update() { // Instance.Focus(); } private void OnDestroy() { } private void ShowMsg(string msg) { this.msg = msg; } } }