1111
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Stary.Evo
|
||||
{
|
||||
public class FsmLoadSystem : FsmSystem , IFsmSystem
|
||||
public class FsmLoadSystem : FsmSystemAsync , IFsmSystemAsync
|
||||
{
|
||||
private OpenDomainType OpenDomainType { get; set; }
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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} 资源包不存在,请检查是否已经卸载还是卸载异常...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user