예제 #1
0
        private void DrawProductContent(ISN_SKProduct product)
        {
            product.ProductIdentifier = SA_EditorGUILayout.TextField(m_ProductIdDLabel, product.ProductIdentifier);
            product.LocalizedTitle    = SA_EditorGUILayout.TextField(m_DisplayNameLabel, product.LocalizedTitle);
            product.Type      = (ISN_SKProductType)SA_EditorGUILayout.EnumPopup(m_ProductTypeLabel, product.Type);
            product.PriceTier = (ISN_SKPriceTier)SA_EditorGUILayout.EnumPopup(m_PriceTierLabel, product.PriceTier);

            EditorGUILayout.LabelField(m_DescriptionLabel);
            using (new SA_GuiBeginHorizontal())
            {
                product.LocalizedDescription = EditorGUILayout.TextArea(product.LocalizedDescription, GUILayout.Height(60), GUILayout.MinWidth(190));
                EditorGUILayout.Space();
                product.Icon = (Texture2D)EditorGUILayout.ObjectField("", product.Icon, typeof(Texture2D), false, GUILayout.Width(75));
            }
        }
예제 #2
0
        private void DrawProductContent(AN_Product product)
        {
            product.ProductId    = SA_EditorGUILayout.TextField(ProductIdDLabel, product.ProductId);
            product.Title        = SA_EditorGUILayout.TextField(DisplayNameLabel, product.Title);
            product.Type         = (AN_ProductType)SA_EditorGUILayout.EnumPopup(ProductType, product.Type);
            product.IsConsumable = SA_EditorGUILayout.ToggleFiled(ConsumableLabel, product.IsConsumable, SA_StyledToggle.ToggleType.YesNo);

            product.Price = SA_EditorGUILayout.TextField(PriceLabel, product.Price);


            EditorGUILayout.LabelField(DescriptionLabel);
            using (new SA_GuiBeginHorizontal()) {
                product.Description = EditorGUILayout.TextArea(product.Description, GUILayout.Height(60), GUILayout.MinWidth(190));
                EditorGUILayout.Space();
                product.Icon = (Texture2D)EditorGUILayout.ObjectField("", product.Icon, typeof(Texture2D), false, GUILayout.Width(75));
            }
        }
예제 #3
0
        public override void OnGUI()
        {
            using (new SA_WindowBlockWithSpace(new GUIContent("Log Level")))
            {
                EditorGUILayout.HelpBox("We recommend you to keep full logging level while your project in development mode. " +
                                        "Full communication logs between Native plugin part & " +
                                        "Unity side will be only available with Info logging  level enabled. \n" +
                                        "Disabling the error logs isn't recommended.", MessageType.Info);


                using (new SA_GuiBeginHorizontal())
                {
                    var logLevel = AN_Settings.Instance.LogLevel;
                    logLevel.Info    = GUILayout.Toggle(logLevel.Info, Info, GUILayout.Width(80));
                    logLevel.Warning = GUILayout.Toggle(logLevel.Warning, Warnings, GUILayout.Width(100));
                    logLevel.Error   = GUILayout.Toggle(logLevel.Error, Errors, GUILayout.Width(100));
                }

                EditorGUILayout.Space();
                EditorGUILayout.HelpBox("On some Android devices, Log.d or Log.e methods will not print anything to console," +
                                        "so sometimes the only ability to see the logs is to enable the WTF printing. This will make all" +
                                        "logs to be printed with Log.wtf method despite message log level.", MessageType.Info);

                AN_Settings.Instance.WTFLogging = GUILayout.Toggle(AN_Settings.Instance.WTFLogging, "WTF Logging", GUILayout.Width(130));
            }

            using (new SA_WindowBlockWithSpace(new GUIContent("Environment Management")))
            {
                EditorGUILayout.HelpBox("The Android Native plugin will alter manifest " +
                                        "automatically for your convenience. But in case you want to do it manually, " +
                                        "you may un-toggle the checkbox below \n" +
                                        "The plugin manifest is located under: " + AN_Settings.ANDROID_CORE_LIB_PATH, MessageType.Info);
                AN_Settings.Instance.ManifestManagement = SA_EditorGUILayout.ToggleFiled("Auto Manifest Management", AN_Settings.Instance.ManifestManagement, SA_StyledToggle.ToggleType.EnabledDisabled);

                EditorGUILayout.Space();
                EditorGUILayout.HelpBox("The Android Resolver plugin will download and integrate Android library dependencies " +
                                        "and handle any conflicts between plugins that share the same dependencies. \n" +
                                        "The Resolver is an additional third-party plugin. You need to download, install and configure it" +
                                        "Before Android Native will able to rely on this plugin and disable internal libraries.",
                                        MessageType.Info);


                using (new SA_GuiBeginHorizontal())
                {
                    GUILayout.Label(UnityJarResolverText, GUILayout.MaxWidth(120));
                    if (AN_Settings.Instance.UseUnityJarResolver)
                    {
                        if (AN_Settings.Instance.UnityJarResolverVersion != null && AN_Settings.Instance.UnityJarResolverVersion.Length > 0)
                        {
                            UnityJarResolverState = new GUIContent("version " + AN_Settings.Instance.UnityJarResolverVersion, "Version of current Jar Resolver.");
                        }
                        else
                        {
                            UnityJarResolverState = new GUIContent("Enabled");
                        }
                    }
                    else
                    {
                        UnityJarResolverState = new GUIContent("Disabled");
                    }
                    GUILayout.Label(UnityJarResolverState, GUILayout.MaxWidth(100));
                    GUILayout.FlexibleSpace();


                    GUIContent restartResolveContent = new GUIContent("  Restart Resolver", SA_Skin.GetGenericIcon("refresh.png"));
                    var        pressed = GUILayout.Button(restartResolveContent, new GUILayoutOption[2] {
                        GUILayout.Width(140), GUILayout.Height(15)
                    });
                    if (pressed)
                    {
                        AN_ResolveManager.ProcessAssets();
                        GUIUtility.ExitGUI();
                    }
                }
                using (new SA_GuiBeginHorizontal())
                {
                    GUILayout.FlexibleSpace();
                    var click = m_JarResolverLink.DrawWithCalcSize();
                    if (click)
                    {
                        Application.OpenURL(JAR_RESOLVER_DOC_LINK);
                    }
                }
            }

            using (new SA_WindowBlockWithSpace("Storage"))
            {
                EditorGUILayout.HelpBox("When plugin needs to have a valid URI for an image, " +
                                        "it can be saved using the Internal or External storage. " +
                                        "In case saving attempt is failed, an alternative option will be used. " +
                                        "You can define if Internal or External storage should be a preferred option.",
                                        MessageType.Info);
                AN_Settings.Instance.PreferredImagesStorage = (AN_Settings.StorageType)SA_EditorGUILayout.EnumPopup("Preferred Images Storage", AN_Settings.Instance.PreferredImagesStorage);
                using (new SA_GuiBeginHorizontal())
                {
                    GUILayout.FlexibleSpace();
                    var click = m_StorageOptionsLink.DrawWithCalcSize();
                    if (click)
                    {
                        Application.OpenURL(STORAGE_OPTIONS_DOC_LINK);
                    }
                }
            }


            using (new SA_WindowBlockWithSpace("Debug"))
            {
                EditorGUILayout.HelpBox("API Resolver's are normally launched with build pre-process stage", MessageType.Info);
                var pressed = GUILayout.Button("Start API Resolvers");
                if (pressed)
                {
                    SA_PluginsEditor.DisableLibstAtPath(AN_Settings.ANDROID_FOLDER_DISABLED);
                    AN_Preprocessor.Resolve();
                    GUIUtility.ExitGUI();
                }

                EditorGUILayout.HelpBox("Action will reset all of the plugin settings to default.", MessageType.Info);
                pressed = GUILayout.Button("Reset To Defaults");
                if (pressed)
                {
                    AN_Settings.Delete();
                    AN_Preprocessor.Resolve();
                }
            }
        }
        private void Entitlements()
        {
            Texture2D entitlements = SA_EditorAssets.GetTextureAtPath(ISD_Skin.ICONS_PATH + "entitlements.png");

            using (new SA_WindowBlockWithIndent(new GUIContent("Entitlements", entitlements))) {
                EditorGUILayout.HelpBox("Entitlements confer specific capabilities or security permissions to your iOS or macOS app.\n" +
                                        "By default Entitlements file is generated based on your deploy settings, " +
                                        "but you may alos provide own version of the entitlements file by using manual mode", MessageType.Info);
                using (new SA_GuiBeginHorizontal()) {
                    GUILayout.FlexibleSpace();
                    bool click = m_entitlementsLink.DrawWithCalcSize();
                    if (click)
                    {
                        Application.OpenURL("https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy?language=objc");
                    }
                }

                EditorGUILayout.Space();

                ISD_Settings.Instance.EntitlementsMode = (ISD_EntitlementsGenerationMode)SA_EditorGUILayout.EnumPopup("Generation Mode", ISD_Settings.Instance.EntitlementsMode);
                if (ISD_Settings.Instance.EntitlementsMode == ISD_EntitlementsGenerationMode.Manual)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("Entitlements File:");
                    ISD_Settings.Instance.EntitlementsFile = EditorGUILayout.ObjectField(ISD_Settings.Instance.EntitlementsFile, typeof(UnityEngine.Object), false);
                    EditorGUILayout.EndHorizontal();
                }
            }
        }
예제 #5
0
        public void OnGUI()
        {
            var settins = UM_GoogleAdsSettings.Instance;

            using (new SA_GuiBeginHorizontal())
            {
                GUILayout.FlexibleSpace();
                var example = GUILayout.Button("Example", EditorStyles.miniButton, GUILayout.Width(80));
                if (example)
                {
                    FillExampleSettings();
                }

                var click = GUILayout.Button("Dashboard", EditorStyles.miniButton, GUILayout.Width(80));
                if (click)
                {
                    Application.OpenURL("https://apps.admob.com/");
                }
            }

            using (new SA_H2WindowBlockWithSpace(new GUIContent("IOS")))
            {
                UM_AdvertisementUI.DrawPlatformIds(settins.IOSIds);
            }

            using (new SA_H2WindowBlockWithSpace(new GUIContent("ANDROID")))
            {
                if (string.IsNullOrEmpty(settins.AndroidIds.AppId))
                {
                    EditorGUILayout.HelpBox("Application id MUST be provided on Android platform before you make a build. " +
                                            "Empty Application id may result in app crash on launch.", MessageType.Error);
                }

                UM_AdvertisementUI.DrawPlatformIds(settins.AndroidIds);
            }

            using (new SA_H2WindowBlockWithSpace(new GUIContent("SETTINGS")))
            {
#if SA_ADMOB_INSTALLED
                settins.BannerSize     = (UM_GoogleBannerSize)SA_EditorGUILayout.EnumPopup("Banner Size", settins.BannerSize);
                settins.BannerPosition = (AdPosition)SA_EditorGUILayout.EnumPopup("Banner Position", settins.BannerPosition);
#endif

                settins.NPA = SA_EditorGUILayout.ToggleFiled("Non-Personalized Ads",
                                                             settins.TagForChildDirectedTreatment,
                                                             SA_StyledToggle.ToggleType.YesNo);

                settins.TagForChildDirectedTreatment = SA_EditorGUILayout.ToggleFiled("Tag For Child Directed Treatment",
                                                                                      settins.TagForChildDirectedTreatment,
                                                                                      SA_StyledToggle.ToggleType.YesNo);

                ReorderableListGUI.Title("Test Devices");
                ReorderableListGUI.ListField(settins.TestDevices, DrawTextFiled, () => {
                    EditorGUILayout.LabelField("Configure your device as a test device.");
                });
                EditorGUILayout.Space();


                ReorderableListGUI.Title("Keywords");
                ReorderableListGUI.ListField(settins.Keywords, DrawTextFiled, () => {
                    EditorGUILayout.LabelField("Provide keywords to admob so the ads can be targeted.");
                });
                EditorGUILayout.Space();
            }

            if (GUI.changed)
            {
                UM_GoogleAdsSettings.Save();
            }
        }