ProjectExporterSettings.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using UnityEditor;
  4. using UnityEngine;
  5. namespace AssetBank.Settings
  6. {
  7. public enum UnityAssetType
  8. {
  9. Animation,
  10. AnimatorController,
  11. AnimatorOverrideController,
  12. AudioClip,
  13. AudioMixer,
  14. ComputeShader,
  15. Font,
  16. GUISkin,
  17. Material,
  18. Mesh,
  19. Model,
  20. PhysicMaterial,
  21. Prefab,
  22. Scene,
  23. Script,
  24. Shader,
  25. Sprite,
  26. Texture,
  27. VideoClip,
  28. RenderTexture,
  29. LightmapParameters,
  30. Custom
  31. }
  32. [System.Serializable]
  33. public class IgnoredUnityType
  34. {
  35. public UnityAssetType assetType = UnityAssetType.Texture;
  36. public string customType = "";
  37. }
  38. public class ProjectExporterSettings : ScriptableObject
  39. {
  40. private const string k_SettingsPath = "Assets/AssetBank/Assets/ProjectExporterSettings.asset";
  41. [SerializeField]
  42. private List<string> m_FoldersToIgnore = new();
  43. public List<string> FoldersToIgnore => m_FoldersToIgnore;
  44. [SerializeField]
  45. private List<string> m_FileExtensionsToIgnore = new();
  46. public List<string> FileExtensionsToIgnore => m_FileExtensionsToIgnore;
  47. [SerializeField]
  48. private List<IgnoredUnityType> m_UnityTypesToIgnore = new();
  49. public List<IgnoredUnityType> UnityTypesToIgnore => m_UnityTypesToIgnore;
  50. internal static ProjectExporterSettings GetOrCreateSettings()
  51. {
  52. var settings = AssetDatabase.LoadAssetAtPath<ProjectExporterSettings>(k_SettingsPath);
  53. if (settings == null)
  54. {
  55. settings = CreateInstance<ProjectExporterSettings>();
  56. var directory = Path.GetDirectoryName(k_SettingsPath);
  57. if (!Directory.Exists(directory))
  58. {
  59. Directory.CreateDirectory(directory);
  60. }
  61. AssetDatabase.CreateAsset(settings, k_SettingsPath);
  62. AssetDatabase.SaveAssets();
  63. }
  64. return settings;
  65. }
  66. internal static SerializedObject GetSerializedSettings()
  67. {
  68. return new SerializedObject(GetOrCreateSettings());
  69. }
  70. }
  71. }