AlicizaX/Client/Packages/com.alicizax.unity.resource/Runtime/Resource/ResourceManager.Initialization.cs
陈思海 eb38f67131 init
2025-01-23 19:06:48 +08:00

109 lines
4.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using YooAsset;
namespace AlicizaX.Resource.Runtime
{
internal partial class ResourceManager
{
/// <summary>
/// 根据运行模式创建初始化操作数据
/// </summary>
/// <returns></returns>
private InitializationOperation CreateInitializationOperationHandler(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL)
{
switch (PlayMode)
{
case EPlayMode.EditorSimulateMode:
{
// 编辑器下的模拟模式
return InitializeYooAssetEditorSimulateMode(resourcePackage, DefaultPackageName);
}
case EPlayMode.OfflinePlayMode:
{
// 单机运行模式
return InitializeYooAssetOfflinePlayMode(resourcePackage);
}
case EPlayMode.HostPlayMode:
{
// 联机运行模式
return InitializeYooAssetHostPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL);
}
case EPlayMode.WebPlayMode:
{
// WebGL运行模式
return InitializeYooAssetWebPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL);
}
default:
{
return null;
}
}
}
private InitializationOperation InitializeYooAssetEditorSimulateMode(ResourcePackage resourcePackage, string packageName)
{
var initParameters = new EditorSimulateModeParameters();
//注意如果是原生文件系统选择EDefaultBuildPipeline.RawFileBuildPipeline
var buildPipeline = EDefaultBuildPipeline.BuiltinBuildPipeline;
var simulateBuildResult = EditorSimulateModeHelper.SimulateBuild(buildPipeline, DefaultPackageName);
var editorFileSystem = FileSystemParameters.CreateDefaultEditorFileSystemParameters(simulateBuildResult);
initParameters.EditorFileSystemParameters = editorFileSystem;
return resourcePackage.InitializeAsync(initParameters);
}
private InitializationOperation InitializeYooAssetOfflinePlayMode(ResourcePackage resourcePackage)
{
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
var initParameters = new OfflinePlayModeParameters();
initParameters.BuildinFileSystemParameters = buildinFileSystem;
return resourcePackage.InitializeAsync(initParameters);
}
private InitializationOperation InitializeYooAssetWebPlayMode(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL)
{
var initParameters = new WebPlayModeParameters();
FileSystemParameters webFileSystem = null;
#if UNITY_WEBGL
#if ENABLE_DOUYIN_MINI_GAME
// 创建字节小游戏文件系统
if (hostServerURL.IsNullOrWhiteSpace())
{
webFileSystem = ByteGameFileSystemCreater.CreateByteGameFileSystemParameters();
}
else
{
webFileSystem = ByteGameFileSystemCreater.CreateByteGameFileSystemParameters(hostServerURL);
}
#elif ENABLE_WECHAT_MINI_GAME
WeChatWASM.WXBase.PreloadConcurrent(10);
// 创建微信小游戏文件系统
if (hostServerURL.IsNullOrWhiteSpace())
{
webFileSystem = WechatFileSystemCreater.CreateWechatFileSystemParameters();
}
else
{
webFileSystem = WechatFileSystemCreater.CreateWechatPathFileSystemParameters(hostServerURL);
}
#else
// 创建默认WebGL文件系统
webFileSystem = FileSystemParameters.CreateDefaultWebFileSystemParameters();
#endif
#else
webFileSystem = FileSystemParameters.CreateDefaultWebFileSystemParameters();
#endif
initParameters.WebFileSystemParameters = webFileSystem;
return resourcePackage.InitializeAsync(initParameters);
}
private InitializationOperation InitializeYooAssetHostPlayMode(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL)
{
IRemoteServices remoteServices = new RemoteServices(hostServerURL, fallbackHostServerURL);
var cacheFileSystem = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
var initParameters = new HostPlayModeParameters();
initParameters.BuildinFileSystemParameters = buildinFileSystem;
initParameters.CacheFileSystemParameters = cacheFileSystem;
return resourcePackage.InitializeAsync(initParameters);
}
}
}