2023-04-03 11:04:31 +08:00

110 lines
3.3 KiB
C#

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<string, string[], bool, bool, string> onClose;
public static LocalizeInputWindow Instance = null;
public LocalizeInputWindow() { Instance = this; }
[SerializeField]
public string key;
[SerializeField]
public List<string> paramList = new List<string>();
[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<string, string[], bool, bool, string> 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;
}
}
}