AnalyticsSettingsProvider.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Unity.Services.Core.Editor;
  2. using UnityEditor;
  3. using UnityEngine;
  4. using UnityEngine.UIElements;
  5. namespace Unity.Services.Analytics.Editor.Settings
  6. {
  7. class AnalyticsSettingsProvider : EditorGameServiceSettingsProvider
  8. {
  9. const string k_Title = "Analytics - Gaming Services";
  10. const string k_GoToDashboardContainer = "dashboard-button-container";
  11. const string k_GoToDashboardBtn = "dashboard-link-button";
  12. protected override IEditorGameService EditorGameService => k_GameService;
  13. protected override string Title => k_Title;
  14. protected override string Description => "Analytics enables you to easily understand game performance and player behaviors so you can make strategic decisions.";
  15. static readonly AnalyticsEditorGameService k_GameService = new AnalyticsEditorGameService();
  16. AnalyticsSettingsProvider(SettingsScope scopes)
  17. : base(GenerateProjectSettingsPath(k_Title), scopes) { }
  18. [SettingsProvider]
  19. public static SettingsProvider CreateSettingsProvider()
  20. {
  21. return new AnalyticsSettingsProvider(SettingsScope.Project);
  22. }
  23. // This method must be implemented as part of EditorGameServiceSettingsProvider.
  24. // It is used to create UI elements in the window, but there's nothing to add atm so
  25. // it is essentially empty.
  26. protected override VisualElement GenerateServiceDetailUI()
  27. {
  28. var containerVisualElement = new VisualElement();
  29. return containerVisualElement;
  30. }
  31. public override void OnActivate(string searchContext, VisualElement rootElement)
  32. {
  33. base.OnActivate(searchContext, rootElement);
  34. SetDashboardButton(rootElement);
  35. }
  36. static void SetDashboardButton(VisualElement rootElement)
  37. {
  38. rootElement.Q(k_GoToDashboardContainer).style.display = DisplayStyle.Flex;
  39. var goToDashboard = rootElement.Q(k_GoToDashboardBtn);
  40. if (goToDashboard != null)
  41. {
  42. var clickable = new Clickable(() =>
  43. {
  44. Application.OpenURL(k_GameService.GetFormattedDashboardUrl());
  45. });
  46. goToDashboard.AddManipulator(clickable);
  47. }
  48. }
  49. }
  50. }