MySettingsProvider.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using UnityEngine;
  3. namespace UnityEditor.SettingsManagement.Examples
  4. {
  5. /// <summary>
  6. /// To create an entry in the Preferences window, define a new SettingsProvider inheriting <see cref="UserSettingsProvider"/>.
  7. /// You can also choose to implement your own SettingsProvider and ignore this implementation. The benefit of using
  8. /// <see cref="UserSettingsProvider"/> is that all <see cref="UserSetting{T}"/> fields in the assembly are automatically
  9. /// populated within the preferences, with support for search and resetting default values.
  10. /// </summary>
  11. static class MySettingsProvider
  12. {
  13. const string k_PreferencesPath = "Preferences/Package With Project and User Settings";
  14. #if UNITY_2018_3_OR_NEWER
  15. [SettingsProvider]
  16. static SettingsProvider CreateSettingsProvider()
  17. {
  18. var provider = new UserSettingsProvider(k_PreferencesPath,
  19. MySettingsManager.instance,
  20. new [] { typeof(MySettingsProvider).Assembly });
  21. return provider;
  22. }
  23. #else
  24. // For backwards compatibility it is possible to create an instance of UserSettingsProvider and invoke OnGUI manually.
  25. [NonSerialized]
  26. static UserSettingsProvider s_SettingsProvider;
  27. [PreferenceItem("ProBuilder")]
  28. static void ProBuilderPreferencesGUI()
  29. {
  30. if (s_SettingsProvider == null)
  31. s_SettingsProvider = new UserSettingsProvider(MySettingsManager.instance, new[] { typeof(MySettingsProvider).Assembly });
  32. s_SettingsProvider.OnGUI(null);
  33. }
  34. #endif
  35. }
  36. }