124 lines
5.7 KiB
C#
124 lines
5.7 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using YooAsset;
|
|
|
|
namespace AlicizaX.Resource.Runtime
|
|
{
|
|
internal partial class ResourceModule
|
|
{
|
|
/// <summary>
|
|
/// 根据运行模式创建初始化操作数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private InitializationOperation CreateInitializationOperationHandler(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL, string decryptionServicesName)
|
|
{
|
|
IDecryptionServices decryptionServices = CreateDecryptionServices(decryptionServicesName);
|
|
switch (PlayMode)
|
|
{
|
|
case EPlayMode.EditorSimulateMode:
|
|
{
|
|
// 编辑器下的模拟模式
|
|
return InitializeYooAssetEditorSimulateMode(resourcePackage, DefaultPackageName);
|
|
}
|
|
case EPlayMode.OfflinePlayMode:
|
|
{
|
|
// 单机运行模式
|
|
return InitializeYooAssetOfflinePlayMode(resourcePackage, decryptionServices);
|
|
}
|
|
case EPlayMode.HostPlayMode:
|
|
{
|
|
// 联机运行模式
|
|
return InitializeYooAssetHostPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL, decryptionServices);
|
|
}
|
|
case EPlayMode.WebPlayMode:
|
|
{
|
|
// WebGL运行模式
|
|
return InitializeYooAssetWebPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL);
|
|
}
|
|
default:
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
private IDecryptionServices CreateDecryptionServices(string decryptionServicesName)
|
|
{
|
|
IDecryptionServices decryptionServices = null;
|
|
if (!string.IsNullOrEmpty(decryptionServicesName))
|
|
{
|
|
var decryptionServicesType = AlicizaX.Utility.Assembly.GetType(decryptionServicesName);
|
|
decryptionServices = (IDecryptionServices)Activator.CreateInstance(decryptionServicesType);
|
|
}
|
|
|
|
return decryptionServices;
|
|
}
|
|
|
|
private InitializationOperation InitializeYooAssetEditorSimulateMode(ResourcePackage resourcePackage, string packageName)
|
|
{
|
|
var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName);
|
|
var packageRoot = buildResult.PackageRootDirectory;
|
|
var createParameters = new EditorSimulateModeParameters();
|
|
createParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
|
|
// createParameters.EditorFileSystemParameters.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES,new FileOffsetEncryption());
|
|
return resourcePackage.InitializeAsync(createParameters);
|
|
}
|
|
|
|
private InitializationOperation InitializeYooAssetOfflinePlayMode(ResourcePackage resourcePackage, IDecryptionServices decryptionServices = null)
|
|
{
|
|
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
|
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.CreateDefaultWebServerFileSystemParameters();
|
|
#endif
|
|
initParameters.WebServerFileSystemParameters = webFileSystem;
|
|
return resourcePackage.InitializeAsync(initParameters);
|
|
}
|
|
|
|
private InitializationOperation InitializeYooAssetHostPlayMode(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL, IDecryptionServices decryptionServices = null)
|
|
{
|
|
IRemoteServices remoteServices = new RemoteServices(hostServerURL, fallbackHostServerURL);
|
|
var cacheFileSystem = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
|
|
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
|
var initParameters = new HostPlayModeParameters();
|
|
initParameters.BuildinFileSystemParameters = buildinFileSystem;
|
|
initParameters.CacheFileSystemParameters = cacheFileSystem;
|
|
return resourcePackage.InitializeAsync(initParameters);
|
|
}
|
|
}
|
|
}
|