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 !");
+ }
+
///
/// 接收事件
///