ProjectExporterSettings.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using UnityEditor;
  4. using UnityEngine;
  5. namespace AssetBank.Editor.ProjectExporter
  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. TimelineAsset,
  29. RenderTexture,
  30. LightmapParameters,
  31. Custom
  32. }
  33. [System.Serializable]
  34. public class IgnoredUnityType
  35. {
  36. public UnityAssetType assetType = UnityAssetType.Texture;
  37. public string customType = "";
  38. }
  39. public class ProjectExporterSettings : ScriptableObject
  40. {
  41. private const string k_SettingsPath = "Assets/AssetBank/Assets/ProjectExporterSettings.asset";
  42. [SerializeField]
  43. private List<string> m_FoldersToIgnore = new List<string>();
  44. public List<string> FoldersToIgnore => m_FoldersToIgnore;
  45. [SerializeField]
  46. private List<string> m_FileExtensionsToIgnore = new List<string>();
  47. public List<string> FileExtensionsToIgnore => m_FileExtensionsToIgnore;
  48. [SerializeField]
  49. private List<IgnoredUnityType> m_UnityTypesToIgnore = new List<IgnoredUnityType>();
  50. public List<IgnoredUnityType> UnityTypesToIgnore => m_UnityTypesToIgnore;
  51. internal static ProjectExporterSettings GetOrCreateSettings()
  52. {
  53. var settings = AssetDatabase.LoadAssetAtPath<ProjectExporterSettings>(k_SettingsPath);
  54. if (settings == null)
  55. {
  56. settings = CreateInstance<ProjectExporterSettings>();
  57. var directory = Path.GetDirectoryName(k_SettingsPath);
  58. if (!Directory.Exists(directory))
  59. {
  60. Directory.CreateDirectory(directory);
  61. }
  62. AssetDatabase.CreateAsset(settings, k_SettingsPath);
  63. AssetDatabase.SaveAssets();
  64. }
  65. return settings;
  66. }
  67. internal static SerializedObject GetSerializedSettings()
  68. {
  69. return new SerializedObject(GetOrCreateSettings());
  70. }
  71. }
  72. }