diff --git a/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmInitializePackage.cs b/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmInitializePackage.cs index 09c0ce00..92513dd0 100644 --- a/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmInitializePackage.cs +++ b/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmInitializePackage.cs @@ -78,7 +78,7 @@ internal class FsmInitializePackage : IStateNode IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); createParameters.WebServerFileSystemParameters = WechatFileSystemCreater.CreateWechatFileSystemParameters(packageRoot, remoteServices); #else - createParameters.WebServerFileSystemParameters = FileSystemParameters.CreateDefaultWebServerFileSystemParameters(); + createParameters.WebServerFileSystemParameters = FileSystemParameters.CreateDefaultWebServerFileSystemParameters(new WebDecryption()); #endif initializationOperation = package.InitializeAsync(createParameters); } @@ -149,4 +149,24 @@ internal class FsmInitializePackage : IStateNode return $"{_fallbackHostServer}/{fileName}"; } } + + private class WebDecryption : IWebDecryptionServices + { + public const byte KEY = 64; + + public WebDecryptResult LoadAssetBundle(WebDecryptFileInfo fileInfo) + { + byte[] copyData = new byte[fileInfo.FileData.Length]; + Buffer.BlockCopy(fileInfo.FileData, 0, copyData, 0, fileInfo.FileData.Length); + + for (int i = 0; i < copyData.Length; i++) + { + copyData[i] ^= KEY; + } + + WebDecryptResult decryptResult = new WebDecryptResult(); + decryptResult.Result = AssetBundle.LoadFromMemory(copyData); + return decryptResult; + } + } } \ No newline at end of file