InventorySkin_inspector.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. using System.IO;
  6. namespace SoftKitty.InventoryEngine
  7. {
  8. [CustomEditor(typeof(InventorySkin))]
  9. public class InventorySkin_inspector : Editor
  10. {
  11. Color _activeColor = new Color(0.1F, 0.5F, 0.8F);
  12. Color _disableColor = new Color(0F, 0.1F, 0.3F);
  13. public override void OnInspectorGUI()
  14. {
  15. var script = MonoScript.FromScriptableObject(this);
  16. InventorySkin targetScript = (InventorySkin)target;
  17. string _thePath = AssetDatabase.GetAssetPath(script);
  18. _thePath = _thePath.Replace("Editor/InventorySkin_inspector.cs", "");
  19. string _basePath = Path.Combine(Application.dataPath, "..", _thePath).Replace(@"\","/") + "Textures/UiStyles/";
  20. string _targetPath= Path.Combine(Application.dataPath, "..", _thePath).Replace(@"\", "/") + "Textures/Sprites/Main.png";
  21. GUILayout.BeginHorizontal();
  22. GUILayout.Label("Overall UI Style:",GUILayout.Width(200));
  23. GUI.backgroundColor = targetScript.UiStyle == 1 ? _activeColor : _disableColor;
  24. if (GUILayout.Button("Immersive",GUILayout.Width(75))) {
  25. targetScript.UiStyle = 1;
  26. File.Copy(_basePath+ "Style1.png", _targetPath,true);
  27. TextureImporter importer = (TextureImporter)TextureImporter.GetAtPath(_thePath + "Textures/Sprites/Main.png");
  28. importer.filterMode = FilterMode.Bilinear;
  29. EditorUtility.SetDirty(importer);
  30. importer.SaveAndReimport();
  31. AssetDatabase.Refresh();
  32. targetScript.UpdatePrefab();
  33. }
  34. GUI.backgroundColor = targetScript.UiStyle == 2 ? _activeColor : _disableColor;
  35. if (GUILayout.Button("Simple", GUILayout.Width(75)))
  36. {
  37. targetScript.UiStyle = 2;
  38. File.Copy(_basePath + "Style2.png", _targetPath, true);
  39. TextureImporter importer = (TextureImporter)TextureImporter.GetAtPath(_thePath + "Textures/Sprites/Main.png");
  40. importer.filterMode = FilterMode.Bilinear;
  41. EditorUtility.SetDirty(importer);
  42. importer.SaveAndReimport();
  43. AssetDatabase.Refresh();
  44. targetScript.UpdatePrefab();
  45. }
  46. GUI.backgroundColor = targetScript.UiStyle == 3 ? _activeColor : _disableColor;
  47. if (GUILayout.Button("Flat", GUILayout.Width(75)))
  48. {
  49. targetScript.UiStyle = 3;
  50. File.Copy(_basePath + "Style3.png", _targetPath, true);
  51. TextureImporter importer = (TextureImporter)TextureImporter.GetAtPath(_thePath + "Textures/Sprites/Main.png");
  52. importer.filterMode = FilterMode.Bilinear;
  53. EditorUtility.SetDirty(importer);
  54. importer.SaveAndReimport();
  55. AssetDatabase.Refresh();
  56. targetScript.UpdatePrefab();
  57. }
  58. GUI.backgroundColor = targetScript.UiStyle == 4 ? _activeColor : _disableColor;
  59. if (GUILayout.Button("Pixel", GUILayout.Width(75)))
  60. {
  61. targetScript.UiStyle = 4;
  62. File.Copy(_basePath + "Style4.png", _targetPath, true);
  63. TextureImporter importer = (TextureImporter)TextureImporter.GetAtPath(_thePath + "Textures/Sprites/Main.png");
  64. importer.filterMode = FilterMode.Point;
  65. EditorUtility.SetDirty(importer);
  66. importer.SaveAndReimport();
  67. AssetDatabase.Refresh();
  68. targetScript.UpdatePrefab();
  69. }
  70. GUI.backgroundColor = Color.white;
  71. GUILayout.EndHorizontal();
  72. GUILayout.BeginHorizontal();
  73. GUILayout.Label("Ui Window Scale:", GUILayout.Width(200));
  74. float _oldScale = targetScript.UiScale;
  75. targetScript.UiScale = EditorGUILayout.Slider(targetScript.UiScale, 1F, 2F, GUILayout.Width(290));
  76. GUILayout.Label("x", GUILayout.Width(15));
  77. if (_oldScale!= targetScript.UiScale && !Application.isPlaying) {
  78. AnimationClip _clip = (AnimationClip)AssetDatabase.LoadAssetAtPath(_thePath + "Animations/WindowOpen.anim", typeof(AnimationClip));
  79. EditorCurveBinding [] _bindings = AnimationUtility.GetCurveBindings(_clip);
  80. foreach (EditorCurveBinding obj in _bindings) {
  81. AnimationCurve _curve = AnimationUtility.GetEditorCurve(_clip, obj);
  82. Keyframe[] _keys = new Keyframe[_curve.keys.Length];
  83. for (int i=0;i<_keys.Length;i++) {
  84. _keys[i].time = _curve.keys[i].time;
  85. _keys[i].value = _curve.keys[i].value;
  86. _keys[i].inTangent = _curve.keys[i].inTangent;
  87. _keys[i].outTangent = _curve.keys[i].outTangent;
  88. _keys[i].inWeight = _curve.keys[i].inWeight;
  89. _keys[i].outWeight = _curve.keys[i].outWeight;
  90. }
  91. _keys[_curve.keys.Length - 1].value = targetScript.UiScale;
  92. _curve.keys = _keys;
  93. AnimationUtility.SetEditorCurve(_clip,obj, _curve);
  94. }
  95. targetScript.UpdatePrefab();
  96. }
  97. GUILayout.EndHorizontal();
  98. GUILayout.BeginHorizontal();
  99. GUILayout.Label("Item Slots Scale:", GUILayout.Width(200));
  100. float _oldSlotScale = targetScript.InventorySlotScale;
  101. targetScript.InventorySlotScale = EditorGUILayout.Slider(targetScript.InventorySlotScale, 1F, 2F, GUILayout.Width(290));
  102. GUILayout.Label("x", GUILayout.Width(15));
  103. GUILayout.EndHorizontal();
  104. GUILayout.BeginHorizontal();
  105. GUILayout.Label("Empty Item Slot Background:", GUILayout.Width(200));
  106. targetScript.EmptyItemBackColor = EditorGUILayout.ColorField(targetScript.EmptyItemBackColor, GUILayout.Width(305));
  107. GUILayout.EndHorizontal();
  108. GUILayout.BeginHorizontal();
  109. GUILayout.Label("Selected Item Outline:", GUILayout.Width(200));
  110. targetScript.ItemSelectedColor = EditorGUILayout.ColorField(targetScript.ItemSelectedColor, GUILayout.Width(305));
  111. GUILayout.EndHorizontal();
  112. GUILayout.BeginHorizontal();
  113. GUILayout.Label("Mouse Hover Item Effect:", GUILayout.Width(200));
  114. targetScript.ItemHoverColor = EditorGUILayout.ColorField(targetScript.ItemHoverColor, GUILayout.Width(305));
  115. GUILayout.EndHorizontal();
  116. GUILayout.BeginHorizontal();
  117. GUILayout.Label("Favorite Item Indicator:", GUILayout.Width(200));
  118. targetScript.FavoriteColor = EditorGUILayout.ColorField(targetScript.FavoriteColor, GUILayout.Width(305));
  119. GUILayout.EndHorizontal();
  120. if ( GUI.changed && !Application.isPlaying) targetScript.UpdatePrefab();
  121. }
  122. }
  123. }