using System; using System.Collections; using System.Collections.Generic; namespace YooAsset.Editor { [Serializable] public class AssetInfo : IComparable { private string _fileExtension = null; /// /// 资源路径 /// public string AssetPath; /// /// 资源GUID /// public string AssetGUID; /// /// 资源类型 /// public System.Type AssetType; /// /// 文件格式 /// public string FileExtension { get { if (string.IsNullOrEmpty(_fileExtension)) _fileExtension = System.IO.Path.GetExtension(AssetPath); return _fileExtension; } } public AssetInfo(string assetPath) { AssetPath = assetPath; AssetGUID = UnityEditor.AssetDatabase.AssetPathToGUID(AssetPath); AssetType = UnityEditor.AssetDatabase.GetMainAssetTypeAtPath(AssetPath); // 注意:如果资源文件损坏或者实例化关联脚本丢失,获取的资源类型会无效! if (AssetType == null) { throw new Exception($"Found invalid asset : {AssetPath}"); } } /// /// 是否为着色器资源 /// public bool IsShaderAsset() { if (AssetType == typeof(UnityEngine.Shader) || AssetType == typeof(UnityEngine.ShaderVariantCollection)) return true; else return false; } public int CompareTo(AssetInfo other) { return this.AssetPath.CompareTo(other.AssetPath); } } }