123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using System;
- using System.IO;
- using UnityEditor;
- namespace XGame.Editor.Build.AssetBundles
- {
- [Serializable]
- public class ABPackerInfo : IComparable
- {
- [UnityEngine.SerializeField]
- private long packerId;
- public ABPackerType packerType;
- public string GUID;
- public string AssetPath
- {
- get
- {
- if (string.IsNullOrEmpty(GUID))
- {
- return string.Empty;
- }
- return AssetDatabase.GUIDToAssetPath(GUID);
- }
- }
- public bool IsDirectory => Directory.Exists(AssetPath);
- public bool IsFile => File.Exists(AssetPath);
- public long PackerId => packerId;
- public ABPackerInfo()
- {
- packerId = System.DateTime.Now.Ticks;
- }
- public override string ToString()
- {
- return $"PackerInfo GUID:{GUID} Type:{packerType} Path:{AssetPath}";
- }
- public int CompareTo(object obj)
- {
- var compare = obj as ABPackerInfo;
- if (compare == null) return -1;
- var result = packerType - compare.packerType;
- if (result == 0)
- {
-
- if (packerType == ABPackerType.SingleAsset)
- {
- //资源在前,文件夹在后
- int sign_0 = this.IsFile ? 0 : 1;
- int sign_1 = compare.IsFile ? 0 : 1;
- result = sign_0 - sign_1;
- if (result == 0)
- {
- result = string.Compare(AssetPath, compare.AssetPath, StringComparison.OrdinalIgnoreCase);
- }
- }
- else
- {
- // 子文件夹在前,父文件夹在后
- var path_0 = AssetPath;
- var path_1 = compare.AssetPath;
- if (path_0.Contains(path_1))
- {
- result = -1;
- }
- else if (path_1.Contains(path_0))
- {
- result = 1;
- }
- else
- {
- result = string.Compare(path_0, path_1, StringComparison.OrdinalIgnoreCase);
- }
- }
- }
- return result;
- }
- }
- }
|