using System; using UnityEngine; using UnityEngine.Purchasing; using UnityEngine.UI; namespace UnityEditor.Purchasing { /// /// IAPButtonMenu class creates options in menus to create the . /// public static class IAPButtonMenu { /// /// Add option to create a IAPButton from the GameObject menu. /// [MenuItem("GameObject/" + IapMenuConsts.PurchasingDisplayName + "/IAP Button (Legacy)", false, 11)] public static void GameObjectCreateUnityIAPButton() { CreateUnityIAPButtonInternal("IAP Button (Legacy)"); GenericEditorMenuItemClickEventSenderHelpers.SendGameObjectMenuAddIapButtonEvent(); } /// /// Add option to create a CodelessIAPButton from the GameObject menu. /// [MenuItem("GameObject/" + IapMenuConsts.PurchasingDisplayName + "/IAP Button", false, 10)] public static void GameObjectCreateUnityCodelessIAPButton() { CreateUnityCodelessIAPButtonInternal("IAP Button"); GenericEditorMenuItemClickEventSenderHelpers.SendGameObjectMenuAddCodelessIapButtonEvent(); } /// /// Add option to create a IAPButton from the Window/UnityIAP menu. /// [MenuItem(IapMenuConsts.MenuItemRoot + "/Create IAP Button (Legacy)", false, 101)] public static void CreateUnityIAPButton() { CreateUnityIAPButtonInternal("IAP Button (Legacy)"); GenericEditorMenuItemClickEventSenderHelpers.SendIapMenuAddIapButtonEvent(); GameServicesEventSenderHelpers.SendTopMenuCreateIapButtonEvent(); } /// /// Add option to create a CodelessIAPButton from the Window/UnityIAP menu. /// [MenuItem(IapMenuConsts.MenuItemRoot + "/Create IAP Button", false, 100)] public static void CreateUnityCodelessIAPButton() { CreateUnityCodelessIAPButtonInternal("IAP Button"); GenericEditorMenuItemClickEventSenderHelpers.SendIapMenuAddCodelessIapButtonEvent(); GameServicesEventSenderHelpers.SendTopMenuCreateCodelessIapButtonEvent(); } static void CreateUnityIAPButtonInternal(string name) { var buttonObject = ItemCreationUtility.CreateGameObject(name, typeof(Button)); if (buttonObject) { //disable Warning CS0618 IAPButton is deprecated, please use CodelessIAPButton instead. #pragma warning disable 0618 var iapButton = buttonObject.AddComponent(); if (iapButton != null) { UnityEditorInternal.ComponentUtility.MoveComponentUp(iapButton); UnityEditorInternal.ComponentUtility.MoveComponentUp(iapButton); UnityEditorInternal.ComponentUtility.MoveComponentUp(iapButton); } } } static void CreateUnityCodelessIAPButtonInternal(string name) { var emptyObject = ItemCreationUtility.CreateGameObject(name); if (emptyObject) { emptyObject.AddComponent(); } } } }