using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; namespace AssetBank.Settings { public enum UnityAssetType { Animation, AnimatorController, AnimatorOverrideController, AudioClip, AudioMixer, ComputeShader, Font, GUISkin, Material, Mesh, Model, PhysicMaterial, Prefab, Scene, Script, Shader, Sprite, Texture, VideoClip, RenderTexture, LightmapParameters, Custom } [System.Serializable] public class IgnoredUnityType { public UnityAssetType assetType = UnityAssetType.Texture; public string customType = ""; } public class ProjectExporterSettings : ScriptableObject { private const string k_SettingsPath = "Assets/AssetBank/Assets/ProjectExporterSettings.asset"; [SerializeField] private List m_FoldersToIgnore = new(); public List FoldersToIgnore => m_FoldersToIgnore; [SerializeField] private List m_FileExtensionsToIgnore = new(); public List FileExtensionsToIgnore => m_FileExtensionsToIgnore; [SerializeField] private List m_UnityTypesToIgnore = new(); public List UnityTypesToIgnore => m_UnityTypesToIgnore; internal static ProjectExporterSettings GetOrCreateSettings() { var settings = AssetDatabase.LoadAssetAtPath(k_SettingsPath); if (settings == null) { settings = CreateInstance(); var directory = Path.GetDirectoryName(k_SettingsPath); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } AssetDatabase.CreateAsset(settings, k_SettingsPath); AssetDatabase.SaveAssets(); } return settings; } internal static SerializedObject GetSerializedSettings() { return new SerializedObject(GetOrCreateSettings()); } } }