| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 | 
							- using System;
 
- using System.Linq;
 
- namespace YooAsset
 
- {
 
- 	[Serializable]
 
- 	internal class PackageBundle
 
- 	{
 
- 		/// <summary>
 
- 		/// 资源包名称
 
- 		/// </summary>
 
- 		public string BundleName;
 
- 		/// <summary>
 
- 		/// 文件哈希值
 
- 		/// </summary>
 
- 		public string FileHash;
 
- 		/// <summary>
 
- 		/// 文件校验码
 
- 		/// </summary>
 
- 		public string FileCRC;
 
- 		/// <summary>
 
- 		/// 文件大小(字节数)
 
- 		/// </summary>
 
- 		public long FileSize;
 
- 		/// <summary>
 
- 		/// 是否为原生文件
 
- 		/// </summary>
 
- 		public bool IsRawFile;
 
- 		/// <summary>
 
- 		/// 加载方法
 
- 		/// </summary>
 
- 		public byte LoadMethod;
 
- 		/// <summary>
 
- 		/// 资源包的分类标签
 
- 		/// </summary>
 
- 		public string[] Tags;
 
- 		/// <summary>
 
- 		/// 引用该资源包的ID列表
 
- 		/// </summary>
 
- 		public int[] ReferenceIDs;
 
- 		/// <summary>
 
- 		/// 所属的包裹名称
 
- 		/// </summary>
 
- 		public string PackageName { private set; get; }
 
- 		/// <summary>
 
- 		/// 缓存GUID
 
- 		/// </summary>
 
- 		public string CacheGUID
 
- 		{
 
- 			get { return FileHash; }
 
- 		}
 
- 		/// <summary>
 
- 		/// 缓存的数据文件路径
 
- 		/// </summary>
 
- 		private string _cachedDataFilePath;
 
- 		public string CachedDataFilePath
 
- 		{
 
- 			get
 
- 			{
 
- 				if (string.IsNullOrEmpty(_cachedDataFilePath) == false)
 
- 					return _cachedDataFilePath;
 
- 				string folderName = FileHash.Substring(0, 2);
 
- 				if (IsRawFile)
 
- 				{
 
- 					string cacheRoot = PersistentTools.GetPersistent(PackageName).SandboxCacheRawFilesRoot;
 
- 					_cachedDataFilePath = PathUtility.Combine(cacheRoot, folderName, CacheGUID, YooAssetSettings.CacheBundleDataFileName);
 
- 					_cachedDataFilePath += _fileExtension;
 
- 				}
 
- 				else
 
- 				{
 
- 					string cacheRoot = PersistentTools.GetPersistent(PackageName).SandboxCacheBundleFilesRoot;
 
- 					_cachedDataFilePath = PathUtility.Combine(cacheRoot, folderName, CacheGUID, YooAssetSettings.CacheBundleDataFileName);
 
- 				}
 
- 				return _cachedDataFilePath;
 
- 			}
 
- 		}
 
- 		/// <summary>
 
- 		/// 缓存的信息文件路径
 
- 		/// </summary>
 
- 		private string _cachedInfoFilePath;
 
- 		public string CachedInfoFilePath
 
- 		{
 
- 			get
 
- 			{
 
- 				if (string.IsNullOrEmpty(_cachedInfoFilePath) == false)
 
- 					return _cachedInfoFilePath;
 
- 				string folderName = FileHash.Substring(0, 2);
 
- 				if (IsRawFile)
 
- 				{
 
- 					string cacheRoot = PersistentTools.GetPersistent(PackageName).SandboxCacheRawFilesRoot;
 
- 					_cachedInfoFilePath = PathUtility.Combine(cacheRoot, folderName, CacheGUID, YooAssetSettings.CacheBundleInfoFileName);
 
- 				}
 
- 				else
 
- 				{
 
- 					string cacheRoot = PersistentTools.GetPersistent(PackageName).SandboxCacheBundleFilesRoot;
 
- 					_cachedInfoFilePath = PathUtility.Combine(cacheRoot, folderName, CacheGUID, YooAssetSettings.CacheBundleInfoFileName);
 
- 				}
 
- 				return _cachedInfoFilePath;
 
- 			}
 
- 		}
 
- 		/// <summary>
 
- 		/// 临时的数据文件路径
 
- 		/// </summary>
 
- 		private string _tempDataFilePath;
 
- 		public string TempDataFilePath
 
- 		{
 
- 			get
 
- 			{
 
- 				if (string.IsNullOrEmpty(_tempDataFilePath) == false)
 
- 					return _tempDataFilePath;
 
- 				_tempDataFilePath = $"{CachedDataFilePath}.temp";
 
- 				return _tempDataFilePath;
 
- 			}
 
- 		}
 
- 		/// <summary>
 
- 		/// 内置文件路径
 
- 		/// </summary>
 
- 		private string _streamingFilePath;
 
- 		public string StreamingFilePath
 
- 		{
 
- 			get
 
- 			{
 
- 				if (string.IsNullOrEmpty(_streamingFilePath) == false)
 
- 					return _streamingFilePath;
 
- 				string root = PersistentTools.GetPersistent(PackageName).BuildinPackageRoot;
 
- 				_streamingFilePath = PathUtility.Combine(root, FileName);
 
- 				return _streamingFilePath;
 
- 			}
 
- 		}
 
- 		/// <summary>
 
- 		/// 文件名称
 
- 		/// </summary>
 
- 		private string _fileName;
 
- 		public string FileName
 
- 		{
 
- 			get
 
- 			{
 
- 				if (string.IsNullOrEmpty(_fileName))
 
- 					throw new Exception("Should never get here !");
 
- 				return _fileName;
 
- 			}
 
- 		}
 
- 		/// <summary>
 
- 		/// 文件后缀名
 
- 		/// </summary>
 
- 		private string _fileExtension;
 
- 		public string FileExtension
 
- 		{
 
- 			get
 
- 			{
 
- 				if (string.IsNullOrEmpty(_fileExtension))
 
- 					throw new Exception("Should never get here !");
 
- 				return _fileExtension;
 
- 			}
 
- 		}
 
- 		public PackageBundle()
 
- 		{
 
- 		}
 
- 		/// <summary>
 
- 		/// 解析资源包
 
- 		/// </summary>
 
- 		public void ParseBundle(string packageName, int nameStype)
 
- 		{
 
- 			PackageName = packageName;
 
- 			_fileExtension = ManifestTools.GetRemoteBundleFileExtension(BundleName);
 
- 			_fileName = ManifestTools.GetRemoteBundleFileName(nameStype, BundleName, _fileExtension, FileHash);
 
- 		}
 
- 		/// <summary>
 
- 		/// 是否包含Tag
 
- 		/// </summary>
 
- 		public bool HasTag(string[] tags)
 
- 		{
 
- 			if (tags == null || tags.Length == 0)
 
- 				return false;
 
- 			if (Tags == null || Tags.Length == 0)
 
- 				return false;
 
- 			foreach (var tag in tags)
 
- 			{
 
- 				if (Tags.Contains(tag))
 
- 					return true;
 
- 			}
 
- 			return false;
 
- 		}
 
- 		/// <summary>
 
- 		/// 是否包含任意Tags
 
- 		/// </summary>
 
- 		public bool HasAnyTags()
 
- 		{
 
- 			if (Tags != null && Tags.Length > 0)
 
- 				return true;
 
- 			else
 
- 				return false;
 
- 		}
 
- 		/// <summary>
 
- 		/// 检测资源包文件内容是否相同
 
- 		/// </summary>
 
- 		public bool Equals(PackageBundle otherBundle)
 
- 		{
 
- 			if (FileHash == otherBundle.FileHash)
 
- 				return true;
 
- 			return false;
 
- 		}
 
- 	}
 
- }
 
 
  |