|
| 1 | +using UnityEditor; |
| 2 | +using UnityEngine; |
| 3 | +using UnityEngine.UI; |
| 4 | + |
| 5 | +namespace Coffee.UIExtensions.Editors |
| 6 | +{ |
| 7 | + internal class MenuOptions_UIUnmask |
| 8 | + { |
| 9 | + [MenuItem("GameObject/UI/Unmask/Tutorial Button")] |
| 10 | + private static void CreateTutorialButton2(MenuCommand menuCommand) |
| 11 | + { |
| 12 | + EditorApplication.ExecuteMenuItem("GameObject/UI/Button"); |
| 13 | + var button = Selection.activeGameObject.GetComponent<Button>(); |
| 14 | + button.name = "Tutorial Button"; |
| 15 | + |
| 16 | + var unmaskedPanel = CreateUnmaskedPanel(AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd"), Image.Type.Sliced); |
| 17 | + var unmask = unmaskedPanel.GetComponentInChildren<Unmask>(); |
| 18 | + unmask.fitTarget = button.transform as RectTransform; |
| 19 | + unmask.fitOnLateUpdate = true; |
| 20 | + |
| 21 | + var screen = unmaskedPanel.transform.Find("Screen").GetComponent<Image>(); |
| 22 | + screen.gameObject.AddComponent<UnmaskRaycastFilter>().targetUnmask = unmask; |
| 23 | + |
| 24 | + Selection.activeGameObject = button.gameObject; |
| 25 | + } |
| 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 | + |
| 35 | + private static GameObject CreateUnmaskedPanel(Sprite unmaskSprite, Image.Type spriteType) |
| 36 | + { |
| 37 | + EditorApplication.ExecuteMenuItem("GameObject/UI/Panel"); |
| 38 | + var mask = Selection.activeGameObject.AddComponent<Mask>(); |
| 39 | + mask.showMaskGraphic = false; |
| 40 | + mask.name = "Unmasked Panel"; |
| 41 | + mask.GetComponent<Image>().sprite = null; |
| 42 | + |
| 43 | + EditorApplication.ExecuteMenuItem("GameObject/UI/Image"); |
| 44 | + var unmask = Selection.activeGameObject.AddComponent<Unmask>(); |
| 45 | + unmask.name = "Unmask"; |
| 46 | + unmask.transform.SetParent(mask.transform); |
| 47 | + unmask.GetComponent<Image>().sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd"); |
| 48 | + |
| 49 | + var image = unmask.GetComponent<Image>(); |
| 50 | + image.sprite = unmaskSprite; |
| 51 | + image.type = spriteType; |
| 52 | + |
| 53 | + EditorApplication.ExecuteMenuItem("GameObject/UI/Panel"); |
| 54 | + var screen = Selection.activeGameObject.GetComponent<Image>(); |
| 55 | + screen.name = "Screen"; |
| 56 | + screen.sprite = null; |
| 57 | + screen.color = new Color(0, 0, 0, 0.8f); |
| 58 | + screen.transform.SetParent(mask.transform); |
| 59 | + |
| 60 | + return mask.gameObject; |
| 61 | + } |
| 62 | + } |
| 63 | +} |
0 commit comments