You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettingsEdit...

136 lines
5.5 KiB
C#

using UnityEditor;
using UnityEngine;
namespace GoogleMobileAds.Editor
{
[InitializeOnLoad]
[CustomEditor(typeof(GoogleMobileAdsSettings))]
public class GoogleMobileAdsSettingsEditor : UnityEditor.Editor
{
SerializedProperty _appIdAndroid;
SerializedProperty _appIdiOS;
SerializedProperty _enableKotlinXCoroutinesPackagingOption;
SerializedProperty _optimizeInitialization;
SerializedProperty _optimizeAdLoading;
SerializedProperty _userTrackingUsageDescription;
SerializedProperty _validateGradleDependencies;
[MenuItem("Assets/Google Mobile Ads/Settings...")]
public static void OpenInspector()
{
Selection.activeObject = GoogleMobileAdsSettings.LoadInstance();
}
public void OnEnable()
{
_appIdAndroid = serializedObject.FindProperty("adMobAndroidAppId");
_appIdiOS = serializedObject.FindProperty("adMobIOSAppId");
_enableKotlinXCoroutinesPackagingOption =
serializedObject.FindProperty("enableKotlinXCoroutinesPackagingOption");
_optimizeInitialization = serializedObject.FindProperty("optimizeInitialization");
_optimizeAdLoading = serializedObject.FindProperty("optimizeAdLoading");
_userTrackingUsageDescription =
serializedObject.FindProperty("userTrackingUsageDescription");
_validateGradleDependencies =
serializedObject.FindProperty("validateGradleDependencies");
}
public override void OnInspectorGUI()
{
// Make sure the Settings object has all recent changes.
serializedObject.Update();
var settings = (GoogleMobileAdsSettings)target;
if(settings == null)
{
UnityEngine.Debug.LogError("GoogleMobileAdsSettings is null.");
return;
}
EditorGUIUtility.labelWidth = 60.0f;
EditorGUILayout.LabelField("Google Mobile Ads App ID", EditorStyles.boldLabel);
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_appIdAndroid, new GUIContent("Android"));
EditorGUILayout.PropertyField(_appIdiOS, new GUIContent("iOS"));
EditorGUILayout.HelpBox(
"Google Mobile Ads App ID will look similar to this sample ID: ca-app-pub-3940256099942544~3347511713",
MessageType.Info);
EditorGUI.indentLevel--;
EditorGUILayout.Separator();
EditorGUIUtility.labelWidth = 325.0f;
EditorGUILayout.LabelField("Android settings", EditorStyles.boldLabel);
EditorGUI.indentLevel++;
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(_enableKotlinXCoroutinesPackagingOption,
new GUIContent("Enable kotlinx.coroutines packaging option."));
if (settings.EnableKotlinXCoroutinesPackagingOption)
{
EditorGUILayout.HelpBox(
"Adds instruction to fix a build.gradle build error with message"+
" '2 files found with path 'META-INF/kotlinx_coroutines_core.version'."+
" For more details see https://developers.google.com/admob/unity/gradle",
MessageType.Info);
}
EditorGUILayout.PropertyField(_validateGradleDependencies,
new GUIContent("Remove property tag from GMA Android SDK"));
if (settings.ValidateGradleDependencies)
{
EditorGUILayout.HelpBox(
"This option ensures the GMA Android SDK is compatible with the version of " +
"Android Gradle Plugin being used. Enabling this option is required for Unity" +
" Projects that use Android Gradle Plugin under version 4.2.2.",
MessageType.Info);
}
EditorGUILayout.PropertyField(_optimizeInitialization,
new GUIContent("Optimize initialization"));
if (settings.OptimizeInitialization) {
EditorGUILayout.HelpBox(
"Initialization will be offloaded to a background thread.",
MessageType.Info);
}
EditorGUILayout.PropertyField(_optimizeAdLoading,
new GUIContent("Optimize ad loading"));
if (settings.OptimizeAdLoading) {
EditorGUILayout.HelpBox(
"Ad loading tasks will be offloaded to a background thread.",
MessageType.Info);
}
EditorGUI.indentLevel--;
EditorGUILayout.Separator();
EditorGUIUtility.labelWidth = 205.0f;
EditorGUILayout.LabelField("UMP-specific settings", EditorStyles.boldLabel);
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_userTrackingUsageDescription,
new GUIContent("User Tracking Usage Description"));
EditorGUILayout.HelpBox(
"A message that informs the user why an iOS app is requesting permission to " +
"use data for tracking the user or the device.", MessageType.Info);
EditorGUI.indentLevel--;
EditorGUILayout.Separator();
serializedObject.ApplyModifiedProperties();
}
}
}