namespace YooAsset { internal class BundleInfo { public enum ELoadMode { None, LoadFromStreaming, LoadFromCache, LoadFromRemote, LoadFromEditor, } private readonly PatchBundle _patchBundle; public readonly ELoadMode LoadMode; private string _streamingPath; private string _cachePath; /// /// 资源包名称 /// public string BundleName { private set; get; } /// /// 文件名称 /// public string FileName { private set; get; } /// /// 远端下载地址 /// public string RemoteMainURL { private set; get; } /// /// 远端下载备用地址 /// public string RemoteFallbackURL { private set; get; } /// /// 编辑器资源路径 /// public string EditorAssetPath { private set; get; } /// /// 文件哈希值 /// public string Hash { get { if (_patchBundle == null) return string.Empty; else return _patchBundle.Hash; } } /// /// 校验的CRC /// public string CRC { get { if (_patchBundle == null) return string.Empty; else return _patchBundle.CRC; } } /// /// 文件大小 /// public long SizeBytes { get { if (_patchBundle == null) return 0; else return _patchBundle.SizeBytes; } } /// /// 是否为加密文件 /// public bool IsEncrypted { get { if (_patchBundle == null) return false; else return _patchBundle.IsEncrypted; } } /// /// 是否为原生文件 /// public bool IsRawFile { get { if (_patchBundle == null) return false; else return _patchBundle.IsRawFile; } } /// /// 身份是否无效 /// public bool IsInvalid { get { return _patchBundle == null; } } private BundleInfo() { } public BundleInfo(PatchBundle patchBundle, ELoadMode loadMode, string mainURL, string fallbackURL) { _patchBundle = patchBundle; LoadMode = loadMode; BundleName = patchBundle.BundleName; FileName = patchBundle.FileName; RemoteMainURL = mainURL; RemoteFallbackURL = fallbackURL; EditorAssetPath = string.Empty; } public BundleInfo(PatchBundle patchBundle, ELoadMode loadMode, string editorAssetPath) { _patchBundle = patchBundle; LoadMode = loadMode; BundleName = patchBundle.BundleName; FileName = patchBundle.FileName; RemoteMainURL = string.Empty; RemoteFallbackURL = string.Empty; EditorAssetPath = editorAssetPath; } public BundleInfo(PatchBundle patchBundle, ELoadMode loadMode) { _patchBundle = patchBundle; LoadMode = loadMode; BundleName = patchBundle.BundleName; FileName = patchBundle.FileName; RemoteMainURL = string.Empty; RemoteFallbackURL = string.Empty; EditorAssetPath = string.Empty; } /// /// 获取流文件夹的加载路径 /// public string GetStreamingLoadPath() { if (_patchBundle == null) return string.Empty; if (string.IsNullOrEmpty(_streamingPath)) _streamingPath = PathHelper.MakeStreamingLoadPath(_patchBundle.FileName); return _streamingPath; } /// /// 获取缓存文件夹的加载路径 /// public string GetCacheLoadPath() { if (_patchBundle == null) return string.Empty; if (string.IsNullOrEmpty(_cachePath)) _cachePath = SandboxHelper.MakeCacheFilePath(_patchBundle.FileName); return _cachePath; } /// /// 是否为JAR包内文件 /// public static bool IsBuildinJarFile(string streamingPath) { return streamingPath.StartsWith("jar:"); } } }