ComponentWhitelistSettings.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using UnityEditor;
  4. using UnityEngine;
  5. namespace AssetBank.Settings
  6. {
  7. public class ComponentWhitelistSettings : ScriptableObject
  8. {
  9. private const string k_SettingsPath = "Assets/AssetBank/Assets/ComponentWhitelistSettings.asset";
  10. [SerializeField]
  11. private List<string> m_WhitelistedComponents = new();
  12. public List<string> WhitelistedComponents => m_WhitelistedComponents;
  13. internal static ComponentWhitelistSettings GetOrCreateSettings()
  14. {
  15. var settings = AssetDatabase.LoadAssetAtPath<ComponentWhitelistSettings>(k_SettingsPath);
  16. if (settings == null)
  17. {
  18. settings = CreateInstance<ComponentWhitelistSettings>();
  19. var directory = Path.GetDirectoryName(k_SettingsPath);
  20. if (!Directory.Exists(directory))
  21. {
  22. Directory.CreateDirectory(directory);
  23. }
  24. AssetDatabase.CreateAsset(settings, k_SettingsPath);
  25. AssetDatabase.SaveAssets();
  26. }
  27. return settings;
  28. }
  29. internal static SerializedObject GetSerializedSettings()
  30. {
  31. return new SerializedObject(GetOrCreateSettings());
  32. }
  33. }
  34. }