Forest_Client/Forest/Assets/PhxhSDK/AOT/YooAsset/YooAssetHelper.cs

117 lines
4.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Cysharp.Threading.Tasks;
using PhxhSDK.AOT.VersionUpdate;
using UnityEngine;
using YooAsset;
namespace PhxhSDK.AOT
{
public class YooAssetHelper
{
public static ResourcePackage defaultPackage;
public static ResourcePackage rawPackage;
public static async UniTask Init()
{
if (defaultPackage != null) return;
// 初始化资源系统
YooAssets.Initialize();
// 创建默认的资源包
defaultPackage = YooAssets.CreatePackage("DefaultPackage");
rawPackage = YooAssets.CreatePackage("RawPackage");
// 设置该资源包为默认的资源包可以使用YooAssets相关加载接口加载该资源包内容。
YooAssets.SetDefaultPackage(defaultPackage);
#if UNITY_EDITOR
#if AB_DEBUG
await _InitRemote();
#else
await _InitEditor();
#endif
#else
await _InitRemote();
#endif
}
private static async UniTask<bool> _InitEditor()
{
Debug.Log("[LTRes]开始初始化编辑器模拟模式");
var initParametersDefault = new EditorSimulateModeParameters();
initParametersDefault.AutoDestroyAssetProvider = true;
initParametersDefault.SimulateManifestFilePath = EditorSimulateModeHelper.SimulateBuild(EDefaultBuildPipeline.BuiltinBuildPipeline, "DefaultPackage");
var op = defaultPackage.InitializeAsync(initParametersDefault);
await op.Task;
if (op.Status != EOperationStatus.Succeed)
{
Debug.LogError("[LTRes]初始化编辑器模拟模式失败");
return false;
}
var initParametersRaw = new EditorSimulateModeParameters();
initParametersRaw.AutoDestroyAssetProvider = true;
initParametersRaw.SimulateManifestFilePath = EditorSimulateModeHelper.SimulateBuild(EDefaultBuildPipeline.RawFileBuildPipeline, "RawPackage");
var op2 = rawPackage.InitializeAsync(initParametersRaw);
await op2.Task;
if (op2.Status != EOperationStatus.Succeed)
{
Debug.LogError("[LTRes]初始化编辑器模拟模式失败");
return false;
}
return true;
}
public static async UniTask InitEditor()
{
await _InitEditor();
}
private static async UniTask<bool> _InitRemote()
{
if (!_isInit)
{
_isInit = true;
await _InitPackage(defaultPackage, false);
await _InitPackage(rawPackage, true);
Debug.Log("[LTRes]InitializeAsync 完成");
}
else
{
Debug.Log("[LTRes]开始重新尝试初始化remote load");
}
return true;
}
private static bool _isInit = false;
private static async UniTask _InitPackage(ResourcePackage package, bool noEncrypt)
{
Debug.Log("开始初始化package:" + package);
var initParameters = new HostPlayModeParameters();
initParameters.AutoDestroyAssetProvider = true;
initParameters.BuildinQueryServices = new GameQueryServices();
// initParameters.DeliveryQueryServices = new GameDeliveryServices();
if (noEncrypt)
{
initParameters.DecryptionServices = new YooDecryptionNone();
}
else
{
initParameters.DecryptionServices = new YooDecryptionFS();
}
PackDataInst.CreateInst();
var workSpace = PackDataInst.inst.localInfo.workSpace;
var version = PackDataInst.inst.localInfo.version;
var buildTarget = PackDataInst.GetRuntimePlatform();
var serverUrl = PackDataInst.inst.localInfo.serverUrl;
var pathRoot = PackDataInst.inst.localInfo.pathRoot;
var hostPath = $"{serverUrl}/{pathRoot}/{workSpace}/{buildTarget}/{version}";
initParameters.RemoteServices = new LTRemoteServices(hostPath);
await package.InitializeAsync(initParameters).Task;
Debug.Log("初始化package结束:" + package);
}
}
}