mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
更新demo
更新demo
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace YooAsset
|
||||
{
|
||||
internal class BundleInfo
|
||||
{
|
||||
public enum ELoadMode
|
||||
{
|
||||
None,
|
||||
LoadFromDelivery,
|
||||
LoadFromStreaming,
|
||||
LoadFromCache,
|
||||
LoadFromRemote,
|
||||
LoadFromEditor,
|
||||
}
|
||||
|
||||
private readonly ResourceAssist _assist;
|
||||
|
||||
/// <summary>
|
||||
/// 资源包对象
|
||||
/// </summary>
|
||||
public readonly PackageBundle Bundle;
|
||||
|
||||
/// <summary>
|
||||
/// 资源包加载模式
|
||||
/// </summary>
|
||||
public readonly ELoadMode LoadMode;
|
||||
|
||||
/// <summary>
|
||||
/// 远端下载地址
|
||||
/// </summary>
|
||||
public string RemoteMainURL { private set; get; }
|
||||
|
||||
/// <summary>
|
||||
/// 远端下载备用地址
|
||||
/// </summary>
|
||||
public string RemoteFallbackURL { private set; get; }
|
||||
|
||||
/// <summary>
|
||||
/// 分发资源文件路径
|
||||
/// </summary>
|
||||
public string DeliveryFilePath { private set; get; }
|
||||
|
||||
/// <summary>
|
||||
/// 注意:该字段只用于帮助编辑器下的模拟模式。
|
||||
/// </summary>
|
||||
public string[] IncludeAssetsInEditor;
|
||||
|
||||
private BundleInfo()
|
||||
{
|
||||
}
|
||||
public BundleInfo(ResourceAssist assist, PackageBundle bundle, ELoadMode loadMode, string mainURL, string fallbackURL)
|
||||
{
|
||||
_assist = assist;
|
||||
Bundle = bundle;
|
||||
LoadMode = loadMode;
|
||||
RemoteMainURL = mainURL;
|
||||
RemoteFallbackURL = fallbackURL;
|
||||
DeliveryFilePath = string.Empty;
|
||||
}
|
||||
public BundleInfo(ResourceAssist assist, PackageBundle bundle, ELoadMode loadMode, string deliveryFilePath)
|
||||
{
|
||||
_assist = assist;
|
||||
Bundle = bundle;
|
||||
LoadMode = loadMode;
|
||||
RemoteMainURL = string.Empty;
|
||||
RemoteFallbackURL = string.Empty;
|
||||
DeliveryFilePath = deliveryFilePath;
|
||||
}
|
||||
public BundleInfo(ResourceAssist assist, PackageBundle bundle, ELoadMode loadMode)
|
||||
{
|
||||
_assist = assist;
|
||||
Bundle = bundle;
|
||||
LoadMode = loadMode;
|
||||
RemoteMainURL = string.Empty;
|
||||
RemoteFallbackURL = string.Empty;
|
||||
DeliveryFilePath = string.Empty;
|
||||
}
|
||||
|
||||
#region Cache
|
||||
public bool IsCached()
|
||||
{
|
||||
return _assist.Cache.IsCached(Bundle.CacheGUID);
|
||||
}
|
||||
public void CacheRecord()
|
||||
{
|
||||
string infoFilePath = CachedInfoFilePath;
|
||||
string dataFilePath = CachedDataFilePath;
|
||||
string dataFileCRC = Bundle.FileCRC;
|
||||
long dataFileSize = Bundle.FileSize;
|
||||
var wrapper = new CacheManager.RecordWrapper(infoFilePath, dataFilePath, dataFileCRC, dataFileSize);
|
||||
_assist.Cache.Record(Bundle.CacheGUID, wrapper);
|
||||
}
|
||||
public void CacheDiscard()
|
||||
{
|
||||
_assist.Cache.Discard(Bundle.CacheGUID);
|
||||
}
|
||||
public EVerifyResult VerifySelf()
|
||||
{
|
||||
return CacheHelper.VerifyingRecordFile(_assist.Cache, Bundle.CacheGUID);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Persistent
|
||||
public string CachedDataFilePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return _assist.Persistent.GetCachedDataFilePath(Bundle);
|
||||
}
|
||||
}
|
||||
public string CachedInfoFilePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return _assist.Persistent.GetCachedInfoFilePath(Bundle);
|
||||
}
|
||||
}
|
||||
public string TempDataFilePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return _assist.Persistent.GetTempDataFilePath(Bundle);
|
||||
}
|
||||
}
|
||||
public string BuildinFilePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return _assist.Persistent.GetBuildinFilePath(Bundle);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Download
|
||||
public DownloaderBase CreateDownloader(int failedTryAgain, int timeout = 60)
|
||||
{
|
||||
return _assist.Download.CreateDownload(this, failedTryAgain, timeout);
|
||||
}
|
||||
public DownloaderBase CreateUnpacker(int failedTryAgain, int timeout = 60)
|
||||
{
|
||||
var unpackBundleInfo = ConvertToUnpackInfo();
|
||||
return _assist.Download.CreateDownload(unpackBundleInfo, failedTryAgain, timeout);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AssetBundle
|
||||
internal AssetBundle LoadAssetBundle(string fileLoadPath, out Stream managedStream)
|
||||
{
|
||||
return _assist.Loader.LoadAssetBundle(this, fileLoadPath, out managedStream);
|
||||
}
|
||||
internal AssetBundleCreateRequest LoadAssetBundleAsync(string fileLoadPath, out Stream managedStream)
|
||||
{
|
||||
return _assist.Loader.LoadAssetBundleAsync(this, fileLoadPath, out managedStream);
|
||||
}
|
||||
internal AssetBundle LoadDeliveryAssetBundle(string fileLoadPath)
|
||||
{
|
||||
return _assist.Loader.LoadDeliveryAssetBundle(this, fileLoadPath);
|
||||
}
|
||||
internal AssetBundleCreateRequest LoadDeliveryAssetBundleAsync(string fileLoadPath)
|
||||
{
|
||||
return _assist.Loader.LoadDeliveryAssetBundleAsync(this, fileLoadPath);
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 转换为解压BundleInfo
|
||||
/// </summary>
|
||||
private BundleInfo ConvertToUnpackInfo()
|
||||
{
|
||||
string streamingPath = PersistentHelper.ConvertToWWWPath(BuildinFilePath);
|
||||
BundleInfo newBundleInfo = new BundleInfo(_assist, Bundle, ELoadMode.LoadFromStreaming, streamingPath, streamingPath);
|
||||
return newBundleInfo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量创建解压BundleInfo
|
||||
/// </summary>
|
||||
public static List<BundleInfo> CreateUnpackInfos(ResourceAssist assist, List<PackageBundle> unpackList)
|
||||
{
|
||||
List<BundleInfo> result = new List<BundleInfo>(unpackList.Count);
|
||||
foreach (var packageBundle in unpackList)
|
||||
{
|
||||
var bundleInfo = CreateUnpackInfo(assist, packageBundle);
|
||||
result.Add(bundleInfo);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
private static BundleInfo CreateUnpackInfo(ResourceAssist assist, PackageBundle packageBundle)
|
||||
{
|
||||
string streamingPath = PersistentHelper.ConvertToWWWPath(assist.Persistent.GetBuildinFilePath(packageBundle));
|
||||
BundleInfo newBundleInfo = new BundleInfo(assist, packageBundle, ELoadMode.LoadFromStreaming, streamingPath, streamingPath);
|
||||
return newBundleInfo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建导入BundleInfo
|
||||
/// </summary>
|
||||
public static BundleInfo CreateImportInfo(ResourceAssist assist, PackageBundle packageBundle, string filePath)
|
||||
{
|
||||
// 注意:我们把本地文件路径指定为远端下载地址
|
||||
string persistentPath = PersistentHelper.ConvertToWWWPath(filePath);
|
||||
BundleInfo bundleInfo = new BundleInfo(assist, packageBundle, BundleInfo.ELoadMode.None, persistentPath, persistentPath);
|
||||
return bundleInfo;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user