MenuOptions.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using UnityEditor;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. namespace Coffee.UIExtensions.Editors
  5. {
  6. internal class MenuOptions_UIUnmask
  7. {
  8. [MenuItem("GameObject/UI/Unmask/Tutorial Button")]
  9. private static void CreateTutorialButton2(MenuCommand menuCommand)
  10. {
  11. #if UNITY_2021_2_OR_NEWER
  12. const string menuItemName = "GameObject/UI/Legacy/Button";
  13. #else
  14. const string menuItemName = "GameObject/UI/Button";
  15. #endif
  16. EditorApplication.ExecuteMenuItem(menuItemName);
  17. var button = Selection.activeGameObject.GetComponent<Button>();
  18. button.name = "Tutorial Button";
  19. var unmaskedPanel = CreateUnmaskedPanel(AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd"), Image.Type.Sliced);
  20. var unmask = unmaskedPanel.GetComponentInChildren<Unmask>();
  21. unmask.fitTarget = button.transform as RectTransform;
  22. unmask.fitOnLateUpdate = true;
  23. var screen = unmaskedPanel.transform.Find("Screen").GetComponent<Image>();
  24. screen.gameObject.AddComponent<UnmaskRaycastFilter>().targetUnmask = unmask;
  25. Selection.activeGameObject = button.gameObject;
  26. }
  27. [MenuItem("GameObject/UI/Unmask/Iris Shot")]
  28. private static void CreateTransition(MenuCommand menuCommand)
  29. {
  30. var unmaskedPanel = CreateUnmaskedPanel(AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/Knob.psd"), Image.Type.Simple);
  31. unmaskedPanel.name = "Iris Shot";
  32. Selection.activeGameObject = unmaskedPanel;
  33. }
  34. private static GameObject CreateUnmaskedPanel(Sprite unmaskSprite, Image.Type spriteType)
  35. {
  36. EditorApplication.ExecuteMenuItem("GameObject/UI/Panel");
  37. var mask = Selection.activeGameObject.AddComponent<Mask>();
  38. mask.showMaskGraphic = false;
  39. mask.name = "Unmasked Panel";
  40. mask.GetComponent<Image>().sprite = null;
  41. EditorApplication.ExecuteMenuItem("GameObject/UI/Image");
  42. var unmask = Selection.activeGameObject.AddComponent<Unmask>();
  43. unmask.name = "Unmask";
  44. unmask.transform.SetParent(mask.transform);
  45. unmask.GetComponent<Image>().sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd");
  46. var image = unmask.GetComponent<Image>();
  47. image.sprite = unmaskSprite;
  48. image.type = spriteType;
  49. EditorApplication.ExecuteMenuItem("GameObject/UI/Panel");
  50. var screen = Selection.activeGameObject.GetComponent<Image>();
  51. screen.name = "Screen";
  52. screen.sprite = null;
  53. screen.color = new Color(0, 0, 0, 0.8f);
  54. screen.transform.SetParent(mask.transform);
  55. return mask.gameObject;
  56. }
  57. }
  58. }