GoogleMobileAdsSettingsEditor.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using UnityEditor;
  2. using UnityEngine;
  3. namespace GoogleMobileAds.Editor
  4. {
  5. [InitializeOnLoad]
  6. [CustomEditor(typeof(GoogleMobileAdsSettings))]
  7. public class GoogleMobileAdsSettingsEditor : UnityEditor.Editor
  8. {
  9. SerializedProperty _appIdAndroid;
  10. SerializedProperty _appIdiOS;
  11. SerializedProperty _delayAppMeasurement;
  12. SerializedProperty _optimizeInitialization;
  13. SerializedProperty _optimizeAdLoading;
  14. [MenuItem("Assets/Google Mobile Ads/Settings...")]
  15. public static void OpenInspector()
  16. {
  17. Selection.activeObject = GoogleMobileAdsSettings.LoadInstance();
  18. }
  19. public void OnEnable()
  20. {
  21. _appIdAndroid = serializedObject.FindProperty("adMobAndroidAppId");
  22. _appIdiOS = serializedObject.FindProperty("adMobIOSAppId");
  23. _delayAppMeasurement = serializedObject.FindProperty("delayAppMeasurementInit");
  24. _optimizeInitialization = serializedObject.FindProperty("optimizeInitialization");
  25. _optimizeAdLoading = serializedObject.FindProperty("optimizeAdLoading");
  26. }
  27. public override void OnInspectorGUI()
  28. {
  29. // Make sure the Settings object has all recent changes.
  30. serializedObject.Update();
  31. var settings = (GoogleMobileAdsSettings)target;
  32. if(settings == null)
  33. {
  34. UnityEngine.Debug.LogError("GoogleMobileAdsSettings is null.");
  35. return;
  36. }
  37. EditorGUILayout.LabelField("Google Mobile Ads App ID", EditorStyles.boldLabel);
  38. EditorGUI.indentLevel++;
  39. EditorGUILayout.PropertyField(_appIdAndroid, new GUIContent("Android"));
  40. EditorGUILayout.PropertyField(_appIdiOS, new GUIContent("iOS"));
  41. EditorGUILayout.HelpBox(
  42. "Google Mobile Ads App ID will look similar to this sample ID: ca-app-pub-3940256099942544~3347511713",
  43. MessageType.Info);
  44. EditorGUI.indentLevel--;
  45. EditorGUILayout.Separator();
  46. EditorGUILayout.LabelField("Android optimization settings", EditorStyles.boldLabel);
  47. EditorGUI.indentLevel++;
  48. EditorGUI.BeginChangeCheck();
  49. EditorGUILayout.PropertyField(_optimizeInitialization,
  50. new GUIContent("Optimize initialization"));
  51. if (settings.OptimizeInitialization) {
  52. EditorGUILayout.HelpBox(
  53. "Initialization will be offloaded to a background thread.",
  54. MessageType.Info);
  55. }
  56. EditorGUILayout.PropertyField(_optimizeAdLoading,
  57. new GUIContent("Optimize ad loading"));
  58. if (settings.OptimizeAdLoading) {
  59. EditorGUILayout.HelpBox(
  60. "Ad loading tasks will be offloaded to a background thread.",
  61. MessageType.Info);
  62. }
  63. EditorGUI.indentLevel--;
  64. EditorGUILayout.Separator();
  65. EditorGUILayout.LabelField("AdMob-specific settings", EditorStyles.boldLabel);
  66. EditorGUI.indentLevel++;
  67. EditorGUI.BeginChangeCheck();
  68. EditorGUILayout.PropertyField(_delayAppMeasurement,
  69. new GUIContent("Delay app measurement"));
  70. if (settings.DelayAppMeasurementInit) {
  71. EditorGUILayout.HelpBox(
  72. "Delays app measurement until you explicitly initialize the Mobile Ads SDK or load an ad.",
  73. MessageType.Info);
  74. }
  75. EditorGUI.indentLevel--;
  76. EditorGUILayout.Separator();
  77. serializedObject.ApplyModifiedProperties();
  78. }
  79. }
  80. }