Unity 框架

LanguageManagerInspector.cs 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System.Collections;
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. using UnityEditor;
  5. using System.Reflection;
  6. namespace TFramework
  7. {
  8. [CustomEditor(typeof(LanguageManager))]
  9. public class LanguageManagerInspector : TEditor
  10. {
  11. SerializedProperty m_languageData;
  12. SerializedProperty m_initKind;
  13. List<string> kinds = new List<string>();
  14. LanguageData data;
  15. LanguageData Data
  16. {
  17. get => data;
  18. set
  19. {
  20. data = value;
  21. if (data != null)
  22. {
  23. FieldInfo[] fieldInfos = GlobalTool.GetTypesInRunTimeAssemblies(type => type.FullName == data.m_languageType)[0].GetFields();
  24. kinds.Clear();
  25. for (int i = 0; i < fieldInfos.Length; i++)
  26. {
  27. LanguageAttribute attribute = fieldInfos[i].GetCustomAttribute<LanguageAttribute>();
  28. kinds.Add(attribute != null ? attribute.LanguageType : fieldInfos[i].Name);
  29. }
  30. }
  31. serializedObject.Update();
  32. (target as LanguageManager).m_languageData = data;
  33. serializedObject.ApplyModifiedProperties();
  34. }
  35. }
  36. int selecteKind = 0;
  37. private void OnEnable()
  38. {
  39. m_languageData = serializedObject.FindProperty("m_languageData");
  40. m_initKind = serializedObject.FindProperty("m_initKind");
  41. data = (target as LanguageManager).m_languageData;
  42. }
  43. public override void OnInspectorGUI()
  44. {
  45. serializedObject.Update();
  46. using(new EditorGUILayout.HorizontalScope())
  47. {
  48. GUILayout.Label("语言数据");
  49. Data = EditorGUILayout.ObjectField(Data, typeof(LanguageData), false) as LanguageData;
  50. }
  51. using(new EditorGUILayout.HorizontalScope())
  52. {
  53. GUILayout.Label("初始语种");
  54. selecteKind = kinds.IndexOf(m_initKind.stringValue);
  55. selecteKind = EditorGUILayout.Popup(selecteKind, kinds.ToArray());
  56. if (kinds.Count > 0)
  57. m_initKind.stringValue = kinds[selecteKind];
  58. }
  59. serializedObject.ApplyModifiedProperties();
  60. }
  61. }
  62. }