This commit is contained in:
2025-09-02 14:15:18 +08:00
parent 796c8d845d
commit 8872c20cf2
34 changed files with 2024 additions and 695 deletions

View File

@@ -2,7 +2,7 @@
namespace Stary.Evo
{
public class FsmLoadSystem : FsmSystem , IFsmSystem
public class FsmLoadSystem : FsmSystemAsync , IFsmSystemAsync
{
private OpenDomainType OpenDomainType { get; set; }

View File

@@ -9,7 +9,7 @@ using YooAsset;
namespace Stary.Evo
{
public class HotFixState : AbstractFSMIState
public class HotFixState : AbstractFSMIStateAsync
{
public string[] PatchedAOTAssemblyList = new string[]
{
@@ -24,7 +24,7 @@ namespace Stary.Evo
"com.stary.evo.runtime.dll"
};
public HotFixState(IFsmSystem system) : base(system)
public HotFixState(IFsmSystemAsync system) : base(system)
{
}

View File

@@ -5,11 +5,11 @@ using YooAsset;
namespace Stary.Evo
{
public class LoadResMainState : AbstractFSMIState
public class LoadResMainState : AbstractFSMIStateAsync
{
private string _doMain = "Main";
public LoadResMainState(IFsmSystem system) : base(system)
public LoadResMainState(IFsmSystemAsync system) : base(system)
{
}

View File

@@ -9,12 +9,12 @@ using YooAsset;
namespace Stary.Evo
{
public class LoadResState : AbstractFSMIState
public class LoadResState : AbstractFSMIStateAsync
{
private DomainConfig.LoadResType loadResType;
public GameObject mainPrefab;
private DomainConfig domainConfig;
public LoadResState(IFsmSystem system) : base(system)
public LoadResState(IFsmSystemAsync system) : base(system)
{
}
@@ -73,13 +73,17 @@ namespace Stary.Evo
if (info._list.Count >= 2)
{
if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.DEFAULT)
if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.PointCloud)
{
info.Switch(0);
info.Switch(1);
}
else if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.VIOICE)
{
info.Switch(1);
info.Switch(0);
}
else if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.ImageTracked)
{
info.Switch(2);
}
}
else
@@ -137,7 +141,35 @@ namespace Stary.Evo
}
if (domainBase != null)
{
GameObject.Destroy(domainBase.gameObject);
await ForceUnloadAllAssets(domainBase.DomainName);
}
}
}
// 强制卸载所有资源包,该方法请在合适的时机调用。
// 注意Package在销毁的时候也会自动调用该方法。
private async UniTask ForceUnloadAllAssets(string packageName)
{
var package = YooAssets.TryGetPackage(packageName);
if (package != null)
{
var operation = package.UnloadAllAssetsAsync();
await operation;
await package.DestroyAsync();
YooAssets.RemovePackage(packageName);
Resources.UnloadUnusedAssets();
GC.Collect();
GC.WaitForPendingFinalizers();
Debug.Log($"UnityEvo:{packageName} 资源包已卸载...");
}
else
{
Debug.LogWarning($"UnityEvo:{packageName} 资源包不存在,请检查是否已经卸载还是卸载异常...");
}
}
}

View File

@@ -13,9 +13,9 @@ using Object = UnityEngine.Object;
namespace Stary.Evo
{
public class ResStartState : AbstractFSMIState
public class ResStartState : AbstractFSMIStateAsync
{
public ResStartState(IFsmSystem system) : base(system)
public ResStartState(IFsmSystemAsync system) : base(system)
{
}

View File

@@ -5,9 +5,9 @@ using YooAsset;
namespace Stary.Evo
{
public class ResUpdateLocalState : AbstractFSMIState
public class ResUpdateLocalState : AbstractFSMIStateAsync
{
public ResUpdateLocalState(IFsmSystem system) : base(system)
public ResUpdateLocalState(IFsmSystemAsync system) : base(system)
{
}

View File

@@ -5,9 +5,9 @@ using YooAsset;
namespace Stary.Evo
{
public class ResUpdateServerState : AbstractFSMIState
public class ResUpdateServerState : AbstractFSMIStateAsync
{
public ResUpdateServerState(IFsmSystem system) : base(system)
public ResUpdateServerState(IFsmSystemAsync system) : base(system)
{
}