mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-06-22 21:03:43 +00:00
change : remove legacy WebGame and WebRemote file systems
This commit is contained in:
@@ -1,43 +1,32 @@
|
||||
#if UNITY_WEBGL && UNITY_ALIMINIGAME
|
||||
using YooAsset;
|
||||
using AlipaySdk;
|
||||
|
||||
public static class AlipayFileSystemCreater
|
||||
{
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(AlipayFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(AlipayFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(AlipayFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 支付宝小游戏文件系统
|
||||
/// </summary>
|
||||
internal class AlipayFileSystem : WebGameFileSystem
|
||||
{
|
||||
protected override IWebGamePlatform CreatePlatform(string packageRoot)
|
||||
private static FileSystemParameters CreateBaseFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
return new AlipayPlatform();
|
||||
var fileSystemParams = FileSystemParameters.CreateDefaultWebNetworkFileSystemParameters(remoteService, true);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.WebPlatformStrategy, new AlipayPlatform());
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -8,12 +8,14 @@ using AlipaySdk;
|
||||
/// 支付宝小游戏平台实现
|
||||
/// 参考:https://opendocs.alipay.com/mini-game/
|
||||
/// </summary>
|
||||
internal class AlipayPlatform : IWebGamePlatform
|
||||
internal class AlipayPlatform : IWebPlatformStrategy
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public UnityWebRequest CreateAssetBundleRequest(string url)
|
||||
public UnityWebRequest CreateAssetBundleRequest(WebAssetBundleRequestArgs args)
|
||||
{
|
||||
return APAssetBundle.GetAssetBundle(url);
|
||||
UnityWebRequest request = APAssetBundle.GetAssetBundle(args.Url);
|
||||
request.disposeDownloadHandlerOnDispose = true;
|
||||
return request;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -3,41 +3,30 @@ using YooAsset;
|
||||
|
||||
public static class KuaiShouFileSystemCreater
|
||||
{
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(KuaiShouFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(KuaiShouFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(KuaiShouFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 快手小游戏文件系统
|
||||
/// </summary>
|
||||
internal class KuaiShouFileSystem : WebGameFileSystem
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
protected override IWebGamePlatform CreatePlatform(string packageRoot)
|
||||
private static FileSystemParameters CreateBaseFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
return new KuaiShouPlatform();
|
||||
var fileSystemParams = FileSystemParameters.CreateDefaultWebNetworkFileSystemParameters(remoteService, true);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.WebPlatformStrategy, new KuaiShouPlatform());
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -7,12 +7,14 @@ using KSWASM;
|
||||
/// <summary>
|
||||
/// 快手小游戏平台实现
|
||||
/// </summary>
|
||||
internal class KuaiShouPlatform : IWebGamePlatform
|
||||
internal class KuaiShouPlatform : IWebPlatformStrategy
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public UnityWebRequest CreateAssetBundleRequest(string url)
|
||||
public UnityWebRequest CreateAssetBundleRequest(WebAssetBundleRequestArgs args)
|
||||
{
|
||||
return KSAssetBundle.GetAssetBundle(url);
|
||||
UnityWebRequest request = KSAssetBundle.GetAssetBundle(args.Url);
|
||||
request.disposeDownloadHandlerOnDispose = true;
|
||||
return request;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -26,17 +26,16 @@ var createParameters = new WebPlayModeOptions();
|
||||
|
||||
string defaultHostServer = GetHostServerURL();
|
||||
string fallbackHostServer = GetHostServerURL();
|
||||
string packageRoot = "/__GAME_FILE_CACHE";
|
||||
IRemoteService remoteService = new RemoteService(defaultHostServer, fallbackHostServer);
|
||||
|
||||
createParameters.WebServerFileSystemParameters =
|
||||
KuaiShouFileSystemCreater.CreateFileSystemParameters(packageRoot, remoteService);
|
||||
KuaiShouFileSystemCreater.CreateFileSystemParameters(remoteService);
|
||||
|
||||
var initializationOperation = package.InitializePackageAsync(createParameters);
|
||||
#endif
|
||||
```
|
||||
|
||||
对当前文件系统来说,`packageRoot` 只需要是一个非空值。快手小游戏底层会对远程 AssetBundle 请求做平台适配,业务侧仍然按照远程异步加载流程使用 YooAsset。
|
||||
快手小游戏底层会对远程 AssetBundle 请求做平台适配,业务侧仍然按照远程异步加载流程使用 YooAsset。
|
||||
|
||||
## 资源包命名
|
||||
|
||||
|
||||
@@ -3,41 +3,30 @@ using YooAsset;
|
||||
|
||||
public static class OppoFileSystemCreater
|
||||
{
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(OppoFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(OppoFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(OppoFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// OPPO 小游戏文件系统
|
||||
/// </summary>
|
||||
internal class OppoFileSystem : WebGameFileSystem
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
protected override IWebGamePlatform CreatePlatform(string packageRoot)
|
||||
private static FileSystemParameters CreateBaseFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
return new OppoPlatform();
|
||||
var fileSystemParams = FileSystemParameters.CreateDefaultWebNetworkFileSystemParameters(remoteService, true);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.WebPlatformStrategy, new OppoPlatform());
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -6,12 +6,14 @@ using YooAsset;
|
||||
/// <summary>
|
||||
/// OPPO 小游戏平台实现
|
||||
/// </summary>
|
||||
internal class OppoPlatform : IWebGamePlatform
|
||||
internal class OppoPlatform : IWebPlatformStrategy
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public UnityWebRequest CreateAssetBundleRequest(string url)
|
||||
public UnityWebRequest CreateAssetBundleRequest(WebAssetBundleRequestArgs args)
|
||||
{
|
||||
return UnityEngine.Networking.UnityWebRequestAssetBundle.GetAssetBundle(url);
|
||||
UnityWebRequest request = UnityEngine.Networking.UnityWebRequestAssetBundle.GetAssetBundle(args.Url);
|
||||
request.disposeDownloadHandlerOnDispose = true;
|
||||
return request;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -24,17 +24,16 @@ var createParameters = new WebPlayModeOptions();
|
||||
|
||||
string defaultHostServer = GetHostServerURL();
|
||||
string fallbackHostServer = GetHostServerURL();
|
||||
string packageRoot = "/__GAME_FILE_CACHE";
|
||||
IRemoteService remoteService = new RemoteService(defaultHostServer, fallbackHostServer);
|
||||
|
||||
createParameters.WebServerFileSystemParameters =
|
||||
OppoFileSystemCreater.CreateFileSystemParameters(packageRoot, remoteService);
|
||||
OppoFileSystemCreater.CreateFileSystemParameters(remoteService);
|
||||
|
||||
var initializationOperation = package.InitializePackageAsync(createParameters);
|
||||
#endif
|
||||
```
|
||||
|
||||
对当前文件系统来说,`packageRoot` 只需要是一个非空值。OPPO 真正的 AssetBundle 缓存行为由生成后小游戏工程里的 `manifest.json` 控制。
|
||||
OPPO 真正的 AssetBundle 缓存行为由生成后小游戏工程里的 `manifest.json` 控制。
|
||||
|
||||
## OPPO 缓存配置
|
||||
|
||||
|
||||
@@ -4,40 +4,30 @@ using TapTapMiniGame;
|
||||
|
||||
public static class TaptapFileSystemCreater
|
||||
{
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// TapTap小游戏文件系统
|
||||
/// </summary>
|
||||
internal class TaptapFileSystem : WebGameFileSystem
|
||||
{
|
||||
protected override IWebGamePlatform CreatePlatform(string packageRoot)
|
||||
private static FileSystemParameters CreateBaseFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
return new TaptapPlatform();
|
||||
var fileSystemParams = FileSystemParameters.CreateDefaultWebNetworkFileSystemParameters(remoteService, true);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.WebPlatformStrategy, new TaptapPlatform());
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -8,12 +8,14 @@ using TapTapMiniGame;
|
||||
/// TapTap 小游戏平台实现
|
||||
/// 参考:https://developer.taptap.cn/minigameapidoc/dev/engine/unity-adaptation/guide/
|
||||
/// </summary>
|
||||
internal class TaptapPlatform : IWebGamePlatform
|
||||
internal class TaptapPlatform : IWebPlatformStrategy
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public UnityWebRequest CreateAssetBundleRequest(string url)
|
||||
public UnityWebRequest CreateAssetBundleRequest(WebAssetBundleRequestArgs args)
|
||||
{
|
||||
return TapAssetBundle.GetAssetBundle(url);
|
||||
UnityWebRequest request = TapAssetBundle.GetAssetBundle(args.Url);
|
||||
request.disposeDownloadHandlerOnDispose = true;
|
||||
return request;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -3,41 +3,30 @@ using YooAsset;
|
||||
|
||||
public static class TiktokFileSystemCreater
|
||||
{
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(TiktokFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(TiktokFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(TiktokFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 抖音小游戏文件系统
|
||||
/// </summary>
|
||||
internal class TiktokFileSystem : WebGameFileSystem
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
protected override IWebGamePlatform CreatePlatform(string packageRoot)
|
||||
private static FileSystemParameters CreateBaseFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
return new TiktokPlatform();
|
||||
var fileSystemParams = FileSystemParameters.CreateDefaultWebNetworkFileSystemParameters(remoteService, true);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.WebPlatformStrategy, new TiktokPlatform());
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -7,12 +7,14 @@ using TTSDK;
|
||||
/// <summary>
|
||||
/// 抖音小游戏平台实现
|
||||
/// </summary>
|
||||
internal class TiktokPlatform : IWebGamePlatform
|
||||
internal class TiktokPlatform : IWebPlatformStrategy
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public UnityWebRequest CreateAssetBundleRequest(string url)
|
||||
public UnityWebRequest CreateAssetBundleRequest(WebAssetBundleRequestArgs args)
|
||||
{
|
||||
return TTAssetBundle.GetAssetBundle(url);
|
||||
UnityWebRequest request = TTAssetBundle.GetAssetBundle(args.Url);
|
||||
request.disposeDownloadHandlerOnDispose = true;
|
||||
return request;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -24,17 +24,16 @@ var createParameters = new WebPlayModeOptions();
|
||||
|
||||
string defaultHostServer = GetHostServerURL();
|
||||
string fallbackHostServer = GetHostServerURL();
|
||||
string packageRoot = "/__GAME_FILE_CACHE";
|
||||
IRemoteService remoteService = new RemoteService(defaultHostServer, fallbackHostServer);
|
||||
|
||||
createParameters.WebServerFileSystemParameters =
|
||||
VivoFileSystemCreater.CreateFileSystemParameters(packageRoot, remoteService);
|
||||
VivoFileSystemCreater.CreateFileSystemParameters(remoteService);
|
||||
|
||||
var initializationOperation = package.InitializePackageAsync(createParameters);
|
||||
#endif
|
||||
```
|
||||
|
||||
对当前文件系统来说,`packageRoot` 只需要是一个非空值。vivo 小游戏底层会对远程 AssetBundle 请求做缓存,业务侧仍然按照远程异步加载流程使用 YooAsset。
|
||||
vivo 小游戏底层会对远程 AssetBundle 请求做缓存,业务侧仍然按照远程异步加载流程使用 YooAsset。
|
||||
|
||||
## 资源包命名
|
||||
|
||||
|
||||
@@ -3,41 +3,30 @@ using YooAsset;
|
||||
|
||||
public static class VivoFileSystemCreater
|
||||
{
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(VivoFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(VivoFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(VivoFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateBaseFileSystemParameters(remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// vivo 小游戏文件系统
|
||||
/// </summary>
|
||||
internal class VivoFileSystem : WebGameFileSystem
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
protected override IWebGamePlatform CreatePlatform(string packageRoot)
|
||||
private static FileSystemParameters CreateBaseFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
return new VivoPlatform();
|
||||
var fileSystemParams = FileSystemParameters.CreateDefaultWebNetworkFileSystemParameters(remoteService, true);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.WebPlatformStrategy, new VivoPlatform());
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -6,12 +6,14 @@ using YooAsset;
|
||||
/// <summary>
|
||||
/// vivo 小游戏平台实现
|
||||
/// </summary>
|
||||
internal class VivoPlatform : IWebGamePlatform
|
||||
internal class VivoPlatform : IWebPlatformStrategy
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public UnityWebRequest CreateAssetBundleRequest(string url)
|
||||
public UnityWebRequest CreateAssetBundleRequest(WebAssetBundleRequestArgs args)
|
||||
{
|
||||
return UnityEngine.Networking.UnityWebRequestAssetBundle.GetAssetBundle(url);
|
||||
UnityWebRequest request = UnityEngine.Networking.UnityWebRequestAssetBundle.GetAssetBundle(args.Url);
|
||||
request.disposeDownloadHandlerOnDispose = true;
|
||||
return request;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -4,19 +4,31 @@ using WeChatWASM;
|
||||
|
||||
public static class WechatFileSystemCreater
|
||||
{
|
||||
private static string DefaultWXCacheRoot => $"{WX.env.USER_DATA_PATH}/__GAME_FILE_CACHE";
|
||||
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService)
|
||||
{
|
||||
var fileSystemParams = CreateFileSystemParameters(DefaultWXCacheRoot, remoteService, null, null);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
var fileSystemParams = CreateFileSystemParameters(DefaultWXCacheRoot, remoteService, assetBundleDecryptor, null);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
{
|
||||
var fileSystemParams = CreateFileSystemParameters(DefaultWXCacheRoot, remoteService, assetBundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(WechatFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
var fileSystemParams = CreateFileSystemParameters(packageRoot, remoteService, null, null);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||
{
|
||||
string fileSystemClass = $"{nameof(WechatFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
var fileSystemParams = CreateFileSystemParameters(packageRoot, remoteService, assetBundleDecryptor, null);
|
||||
return fileSystemParams;
|
||||
}
|
||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||
@@ -24,8 +36,13 @@ public static class WechatFileSystemCreater
|
||||
string fileSystemClass = $"{nameof(WechatFileSystem)},YooAsset.MiniGame";
|
||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.DisableUnityWebCache, true);
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.WebPlatformStrategy, new WechatPlatform());
|
||||
|
||||
if (assetBundleDecryptor != null)
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||
if (rawBundleDecryptor != null)
|
||||
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||
return fileSystemParams;
|
||||
}
|
||||
}
|
||||
@@ -33,10 +50,9 @@ public static class WechatFileSystemCreater
|
||||
/// <summary>
|
||||
/// 微信小游戏文件系统
|
||||
/// </summary>
|
||||
internal class WechatFileSystem : WebGameFileSystem
|
||||
internal class WechatFileSystem : WebNetworkFileSystem
|
||||
{
|
||||
private string _wxCacheRoot;
|
||||
private WechatPlatform _wechatPlatform;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override FSClearCacheOperation ClearCacheAsync(FSClearCacheOptions options)
|
||||
@@ -60,11 +76,10 @@ internal class WechatFileSystem : WebGameFileSystem
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override IWebGamePlatform CreatePlatform(string packageRoot)
|
||||
public override void OnCreate(string packageName, string packageRoot)
|
||||
{
|
||||
_wxCacheRoot = packageRoot;
|
||||
_wechatPlatform = new WechatPlatform();
|
||||
return _wechatPlatform;
|
||||
base.OnCreate(packageName, packageRoot);
|
||||
}
|
||||
|
||||
internal string GetWXCacheRoot()
|
||||
|
||||
@@ -7,12 +7,14 @@ using WeChatWASM;
|
||||
/// <summary>
|
||||
/// 微信小游戏平台实现
|
||||
/// </summary>
|
||||
internal class WechatPlatform : IWebGamePlatform
|
||||
internal class WechatPlatform : IWebPlatformStrategy
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public UnityWebRequest CreateAssetBundleRequest(string url)
|
||||
public UnityWebRequest CreateAssetBundleRequest(WebAssetBundleRequestArgs args)
|
||||
{
|
||||
return WXAssetBundle.GetAssetBundle(url);
|
||||
UnityWebRequest request = WXAssetBundle.GetAssetBundle(args.Url);
|
||||
request.disposeDownloadHandlerOnDispose = true;
|
||||
return request;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
Reference in New Issue
Block a user