SetLanguageInspector.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace I2.Loc
  5. {
  6. [CustomEditor(typeof(SetLanguage))]
  7. public class SetLanguageInspector : Editor
  8. {
  9. public SetLanguage setLan;
  10. public SerializedProperty mProp_Language;
  11. public void OnEnable()
  12. {
  13. setLan = (SetLanguage)target;
  14. mProp_Language = serializedObject.FindProperty("_Language");
  15. }
  16. public override void OnInspectorGUI()
  17. {
  18. string[] Languages;
  19. LanguageSource sourceObj = setLan.mSource;
  20. if (sourceObj == null)
  21. {
  22. LocalizationManager.UpdateSources();
  23. Languages = LocalizationManager.GetAllLanguages().ToArray();
  24. Array.Sort(Languages);
  25. }
  26. else
  27. {
  28. Languages = sourceObj.mSource.GetLanguages().ToArray();
  29. Array.Sort(Languages);
  30. }
  31. int index = Array.IndexOf(Languages, mProp_Language.stringValue);
  32. GUI.changed = false;
  33. index = EditorGUILayout.Popup("Language", index, Languages);
  34. if (GUI.changed)
  35. {
  36. if (index<0 || index>=Languages.Length)
  37. mProp_Language.stringValue = string.Empty;
  38. else
  39. mProp_Language.stringValue = Languages[index];
  40. GUI.changed = false;
  41. serializedObject.ApplyModifiedProperties();
  42. }
  43. GUILayout.Space(5);
  44. if (setLan.mSource==null) GUI.contentColor = Color.Lerp (Color.gray, Color.yellow, 0.1f);
  45. sourceObj = EditorGUILayout.ObjectField("Language Source:", sourceObj, typeof(LanguageSource), true) as LanguageSource;
  46. GUI.contentColor = Color.white;
  47. if (GUI.changed)
  48. setLan.mSource = sourceObj;
  49. serializedObject.ApplyModifiedProperties();
  50. }
  51. }
  52. }