From 16117b67f11927eb8a7e09b2e8195b6ecd12bc24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Tue, 24 Dec 2024 18:49:14 +0800 Subject: [PATCH] update sapce shooter --- .../FsmNode/FsmInitializePackage.cs | 50 +++++++++---------- .../PatchLogic/FsmNode/FsmUpdaterDone.cs | 4 ++ .../Runtime/PatchLogic/PatchOperation.cs | 20 +++++--- 3 files changed, 39 insertions(+), 35 deletions(-) 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 dc721fb0..3ba6d857 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 @@ -33,7 +33,6 @@ internal class FsmInitializePackage : IStateNode { var playMode = (EPlayMode)_machine.GetBlackboardValue("PlayMode"); var packageName = (string)_machine.GetBlackboardValue("PackageName"); - var rawFileSystem = (bool)_machine.GetBlackboardValue("RawFileSystem"); // 创建资源包裹类 var package = YooAssets.TryGetPackage(packageName); @@ -56,10 +55,7 @@ internal class FsmInitializePackage : IStateNode if (playMode == EPlayMode.OfflinePlayMode) { var createParameters = new OfflinePlayModeParameters(); - if (rawFileSystem) - createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinRawFileSystemParameters(); - else - createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); + createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); initializationOperation = package.InitializeAsync(createParameters); } @@ -70,16 +66,8 @@ internal class FsmInitializePackage : IStateNode string fallbackHostServer = GetHostServerURL(); IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); var createParameters = new HostPlayModeParameters(); - if (rawFileSystem) - { - createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinRawFileSystemParameters(); - createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheRawFileSystemParameters(remoteServices); - } - else - { - createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); - createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices); - } + createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); + createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices); initializationOperation = package.InitializeAsync(createParameters); } @@ -174,22 +162,26 @@ internal class FsmInitializePackage : IStateNode /// 同步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundle IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo) { BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read); - managedStream = bundleStream; - return AssetBundle.LoadFromStream(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = bundleStream; + decryptResult.Result = AssetBundle.LoadFromStream(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); + return decryptResult; } /// /// 异步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundleCreateRequest IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo) { BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read); - managedStream = bundleStream; - return AssetBundle.LoadFromStreamAsync(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = bundleStream; + decryptResult.CreateRequest = AssetBundle.LoadFromStreamAsync(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); + return decryptResult; } /// @@ -223,20 +215,24 @@ internal class FsmInitializePackage : IStateNode /// 同步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundle IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo) { - managedStream = null; - return AssetBundle.LoadFromFile(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = null; + decryptResult.Result = AssetBundle.LoadFromFile(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); + return decryptResult; } /// /// 异步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundleCreateRequest IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo) { - managedStream = null; - return AssetBundle.LoadFromFileAsync(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = null; + decryptResult.CreateRequest = AssetBundle.LoadFromFileAsync(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); + return decryptResult; } /// diff --git a/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmUpdaterDone.cs b/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmUpdaterDone.cs index ab031a60..6489a506 100644 --- a/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmUpdaterDone.cs +++ b/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/FsmNode/FsmUpdaterDone.cs @@ -8,11 +8,15 @@ using UniFramework.Machine; /// internal class FsmUpdaterDone : IStateNode { + private PatchOperation _owner; + void IStateNode.OnCreate(StateMachine machine) { + _owner = machine.Owner as PatchOperation; } void IStateNode.OnEnter() { + _owner.SetFinish(); } void IStateNode.OnUpdate() { diff --git a/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/PatchOperation.cs b/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/PatchOperation.cs index d04e93cc..318e110a 100644 --- a/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/PatchOperation.cs +++ b/Assets/YooAsset/Samples~/Space Shooter/GameScript/Runtime/PatchLogic/PatchOperation.cs @@ -17,10 +17,13 @@ public class PatchOperation : GameAsyncOperation private readonly EventGroup _eventGroup = new EventGroup(); private readonly StateMachine _machine; + private readonly string _packageName; private ESteps _steps = ESteps.None; - public PatchOperation(string packageName, bool rawFileSystem, EPlayMode playMode) + public PatchOperation(string packageName, EPlayMode playMode) { + _packageName = packageName; + // 注册监听事件 _eventGroup.AddListener(OnHandleEventMessage); _eventGroup.AddListener(OnHandleEventMessage); @@ -41,7 +44,6 @@ public class PatchOperation : GameAsyncOperation _machine.SetBlackboardValue("PackageName", packageName); _machine.SetBlackboardValue("PlayMode", playMode); - _machine.SetBlackboardValue("RawFileSystem", rawFileSystem); } protected override void OnStart() { @@ -56,18 +58,20 @@ public class PatchOperation : GameAsyncOperation if(_steps == ESteps.Update) { _machine.Update(); - if(_machine.CurrentNode == typeof(FsmUpdaterDone).FullName) - { - _eventGroup.RemoveAllListener(); - Status = EOperationStatus.Succeed; - _steps = ESteps.Done; - } } } protected override void OnAbort() { } + public void SetFinish() + { + _steps = ESteps.Done; + _eventGroup.RemoveAllListener(); + Status = EOperationStatus.Succeed; + Debug.Log($"Package {_packageName} patch done !"); + } + /// /// 接收事件 ///