Без опису
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

AdsServiceEnabler.cs 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #if SERVICES_SDK_CORE_ENABLED
  2. using System;
  3. using System.Reflection;
  4. using Unity.Services.Core.Editor;
  5. using UnityEditor.Advertisements;
  6. namespace UnityEngine.Advertisements.Editor
  7. {
  8. class AdsServiceEnabler : EditorGameServiceFlagEnabler
  9. {
  10. const string k_ProjectSettingName = "Unity Ads";
  11. static MethodInfo s_GetCloudServiceEnabled;
  12. static MethodInfo s_SetCloudServiceEnabled;
  13. public event Action ServiceEnabled;
  14. public event Action ServiceDisabled;
  15. protected override string FlagName { get; } = "ads";
  16. static AdsServiceEnabler()
  17. {
  18. s_GetCloudServiceEnabled = TryGetPlayerSettingsMethod("GetCloudServiceEnabled");
  19. s_SetCloudServiceEnabled = TryGetPlayerSettingsMethod("SetCloudServiceEnabled");
  20. }
  21. static MethodInfo TryGetPlayerSettingsMethod(string methodName)
  22. {
  23. MethodInfo playerSettingsMethod = null;
  24. try
  25. {
  26. var playerSettingsType = Type.GetType("UnityEditor.PlayerSettings,UnityEditor.dll");
  27. playerSettingsMethod = playerSettingsType?.GetMethod(methodName, BindingFlags.Static | BindingFlags.NonPublic);
  28. }
  29. catch (Exception)
  30. {
  31. //Simply return null if something failed in the reflection.
  32. }
  33. return playerSettingsMethod;
  34. }
  35. public AdsServiceEnabler()
  36. {
  37. if (!(s_GetCloudServiceEnabled is null))
  38. {
  39. AdvertisementSettings.enabled = GetProjectSettingWithReflection();
  40. }
  41. }
  42. static bool GetProjectSettingWithReflection()
  43. {
  44. var enabledStateResult = s_GetCloudServiceEnabled.Invoke(null, new object[] { k_ProjectSettingName });
  45. var isEnabled = Convert.ToBoolean(enabledStateResult);
  46. return isEnabled;
  47. }
  48. public override bool IsEnabled()
  49. {
  50. return AdvertisementSettings.enabled;
  51. }
  52. protected override void EnableLocalSettings()
  53. {
  54. SetSettingFlag(true);
  55. ServiceEnabled?.Invoke();
  56. }
  57. protected override void DisableLocalSettings()
  58. {
  59. SetSettingFlag(false);
  60. ServiceDisabled?.Invoke();
  61. }
  62. static void SetSettingFlag(bool value)
  63. {
  64. AdvertisementSettings.enabled = value;
  65. s_SetCloudServiceEnabled?.Invoke(null, new object[] { k_ProjectSettingName, value });
  66. }
  67. }
  68. }
  69. #endif