源战役客户端
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

202 linhas
7.5 KiB

  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using UnityEditor;
  4. using System.Collections.Generic;
  5. namespace U3DExtends {
  6. static public class ContextMenu
  7. {
  8. static List<string> mEntries = new List<string>();
  9. static GenericMenu mMenu;
  10. static public void AddItem(string item, bool isChecked, GenericMenu.MenuFunction callback)
  11. {
  12. if (callback != null)
  13. {
  14. if (mMenu == null) mMenu = new GenericMenu();
  15. int count = 0;
  16. for (int i = 0; i < mEntries.Count; ++i)
  17. {
  18. string str = mEntries[i];
  19. if (str == item) ++count;
  20. }
  21. mEntries.Add(item);
  22. if (count > 0) item += " [" + count + "]";
  23. mMenu.AddItem(new GUIContent(item), isChecked, callback);
  24. }
  25. else AddDisabledItem(item);
  26. }
  27. static public void AddItemWithArge(string item, bool isChecked, GenericMenu.MenuFunction2 callback, object arge)
  28. {
  29. if (callback != null)
  30. {
  31. if (mMenu == null) mMenu = new GenericMenu();
  32. int count = 0;
  33. for (int i = 0; i < mEntries.Count; ++i)
  34. {
  35. string str = mEntries[i];
  36. if (str == item) ++count;
  37. }
  38. mEntries.Add(item);
  39. if (count > 0) item += " [" + count + "]";
  40. mMenu.AddItem(new GUIContent(item), isChecked, callback, arge);
  41. }
  42. else AddDisabledItem(item);
  43. }
  44. static public void Show()
  45. {
  46. if (mMenu != null)
  47. {
  48. mMenu.ShowAsContext();
  49. mMenu = null;
  50. mEntries.Clear();
  51. }
  52. }
  53. //增加几种对齐菜单
  54. static public void AddAlignMenu()
  55. {
  56. AddItem("对齐/左对齐 ←", false, AlignTool.AlignInHorziontalLeft);
  57. AddItem("对齐/右对齐 →", false, AlignTool.AlignInHorziontalRight);
  58. AddItem("对齐/上对齐 ↑", false, AlignTool.AlignInVerticalUp);
  59. AddItem("对齐/下对齐 ↓", false, AlignTool.AlignInVerticalDown);
  60. AddItem("对齐/水平均匀 |||", false, AlignTool.UniformDistributionInHorziontal);
  61. AddItem("对齐/垂直均匀 ☰", false, AlignTool.UniformDistributionInVertical);
  62. AddItem("对齐/一样大 ■", false, AlignTool.ResizeMax);
  63. AddItem("对齐/一样小 ●", false, AlignTool.ResizeMin);
  64. }
  65. //增加层次菜单
  66. static public void AddPriorityMenu()
  67. {
  68. AddItem("层次/最里层 ↑↑↑", false, PriorityTool.MoveToTopWidget);
  69. AddItem("层次/最外层 ↓↓↓", false, PriorityTool.MoveToBottomWidget);
  70. AddItem("层次/往里挤 ↑", false, PriorityTool.MoveUpWidget);
  71. AddItem("层次/往外挤 ↓", false, PriorityTool.MoveDownWidget);
  72. }
  73. //增加UI控件菜单
  74. static public void AddUIMenu()
  75. {
  76. AddItem("添加控件/Empty", false, UIEditorHelper.CreateEmptyObj);
  77. AddItem("添加控件/Image", false, UIEditorHelper.CreateImageObj);
  78. AddItem("添加控件/RawImage", false, UIEditorHelper.CreateRawImageObj);
  79. AddItem("添加控件/Button", false, UIEditorHelper.CreateButtonObj);
  80. AddItem("添加控件/Text", false, UIEditorHelper.CreateTextObj);
  81. AddItem("添加控件/AdaptiveText", false, UIEditorHelper.CreateAdaptiveTextObj);
  82. AddItem("添加控件/HScroll", false, UIEditorHelper.CreateHScrollViewObj);
  83. AddItem("添加控件/VScroll", false, UIEditorHelper.CreateVScrollViewObj);
  84. }
  85. //增加UI组件菜单
  86. static public void AddUIComponentMenu()
  87. {
  88. AddItem("添加组件/Image", false, UIEditorHelper.AddImageComponent);
  89. //AddItem("添加组件/RawImage", false, UIEditorHelper.CreateRawImageObj);
  90. //AddItem("添加组件/Button", false, UIEditorHelper.CreateButtonObj);
  91. //AddItem("添加组件/Text", false, UIEditorHelper.CreateTextObj);
  92. AddItem("添加组件/HLayout", false, UIEditorHelper.AddHorizontalLayoutComponent);
  93. AddItem("添加组件/VLayout", false, UIEditorHelper.AddVerticalLayoutComponent);
  94. AddItem("添加组件/GridLayout", false, UIEditorHelper.AddGridLayoutGroupComponent);
  95. }
  96. //增加显示隐藏菜单
  97. static public void AddShowOrHideMenu()
  98. {
  99. bool hasHideWidget = false;
  100. foreach (var item in Selection.gameObjects)
  101. {
  102. if (!item.activeSelf)
  103. {
  104. hasHideWidget = true;
  105. break;
  106. }
  107. }
  108. if (hasHideWidget)
  109. AddItem("显示", false, UILayoutTool.ShowAllSelectedWidgets);
  110. else
  111. AddItem("隐藏", false, UILayoutTool.HideAllSelectedWidgets);
  112. }
  113. static public void AddCommonItems(GameObject[] targets)
  114. {
  115. if (targets == null || targets.Length <= 0)
  116. {
  117. AddItem("新建", false, UIEditorHelper.CreatNewLayoutForMenu);
  118. AddItem("打开界面", false, UIEditorHelper.LoadLayout);
  119. AddItem("打开文件夹", false, UIEditorHelper.LoadLayoutWithFolder);
  120. }
  121. if (targets != null && targets.Length > 0)
  122. {
  123. AddItem("保存", false, UIEditorHelper.SaveLayoutForMenu);
  124. AddItem("打开界面", false, UIEditorHelper.LoadLayout);
  125. AddItem("另存为", false, UIEditorHelper.SaveAnotherLayoutContextMenu);
  126. AddItem("重新加载", false, UIEditorHelper.ReLoadLayoutForMenu);
  127. AddSeparator("///");
  128. AddItem("复制选中控件名", false, UIEditorHelper.CopySelectWidgetName);
  129. //如果选中超过1个节点的话
  130. if (targets.Length > 1)
  131. {
  132. AddAlignMenu();
  133. AddItem("同流合污", false, UILayoutTool.MakeGroup);
  134. }
  135. AddSeparator("///");
  136. if (targets.Length == 1)
  137. {
  138. AddUIMenu();
  139. AddUIComponentMenu();
  140. AddPriorityMenu();
  141. if (UIEditorHelper.IsNodeCanDivide(targets[0]))
  142. AddItem("分道扬镖", false, UILayoutTool.UnGroup);
  143. Decorate uiBase = targets[0].GetComponent<Decorate>();
  144. if (uiBase != null)
  145. {
  146. if (uiBase.gameObject.hideFlags == HideFlags.NotEditable)
  147. {
  148. AddItem("解锁", false, UIEditorHelper.UnLockWidget);
  149. }
  150. else
  151. {
  152. AddItem("锁定", false, UIEditorHelper.LockWidget);
  153. }
  154. }
  155. }
  156. AddShowOrHideMenu();
  157. AddSeparator("///");
  158. AddItem("添加参考图", false, UIEditorHelper.CreateDecorate);
  159. if (targets.Length == 1 && targets[0].transform.childCount > 0)
  160. AddItem("优化层级", false, UILayoutTool.OptimizeBatchForMenu);
  161. }
  162. AddItem("排序所有界面", false, UILayoutTool.ResortAllLayout);
  163. AddItem("清空界面", false, UIEditorHelper.ClearAllCanvas);
  164. }
  165. static public void AddSeparator(string path)
  166. {
  167. if (mMenu == null) mMenu = new GenericMenu();
  168. if (Application.platform != RuntimePlatform.OSXEditor)
  169. mMenu.AddSeparator(path);
  170. }
  171. static public void AddDisabledItem(string item)
  172. {
  173. if (mMenu == null) mMenu = new GenericMenu();
  174. mMenu.AddDisabledItem(new GUIContent(item));
  175. }
  176. }
  177. }
  178. #endif