AlicizaX/Client/Packages/com.alicizax.unity.resource/Runtime/Resource/ResourceManager.Initialization.cs

110 lines
4.9 KiB
C#
Raw Normal View History

2025-01-23 19:06:48 +08:00
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;
2025-01-26 20:55:39 +08:00
#if UNITY_WEBGL
#if ENABLE_DOUYIN_MINI_GAME
2025-01-23 19:06:48 +08:00
// 创建字节小游戏文件系统
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);
2025-01-26 20:55:39 +08:00
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(new FileOffsetDecryption());
2025-01-23 19:06:48 +08:00
var initParameters = new HostPlayModeParameters();
initParameters.BuildinFileSystemParameters = buildinFileSystem;
initParameters.CacheFileSystemParameters = cacheFileSystem;
return resourcePackage.InitializeAsync(initParameters);
}
}
2025-01-26 20:55:39 +08:00
}