Files
plugin-library/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/FsmLoadSystem.cs
T
2026-01-07 18:20:13 +08:00

63 lines
2.0 KiB
C#

using System;
using Cysharp.Threading.Tasks;
using Main;
using UnityEngine;
using YooAsset;
namespace Stary.Evo
{
public class FsmLoadSystem : FsmSystemAsync , IFsmSystemAsync
{
private OpenDomainType OpenDomainType { get; set; }
private TransformCtor transformCtor;
public ProgressBarPanel ProgressBarPanel { get; set; }
public bool IsLogin = false;
public void SetOpenDomainType(OpenDomainType type)
{
this.OpenDomainType = type;
}
public void SetTransformCtor(Transform transform)
{
this.transformCtor = transform.GetTransformCtor();
}
public void SetTransformCtor(TransformCtor transformCtor)
{
this.transformCtor = transformCtor;
}
public OpenDomainType GetOpenDomainType()
{
return this.OpenDomainType;
}
public TransformCtor GetTransformCtor()
{
return this.transformCtor;
}
// 强制卸载所有资源包,该方法请在合适的时机调用。
// 注意:Package在销毁的时候也会自动调用该方法。
public async UniTask ForceUnloadAllAssets(string packageName)
{
var package = YooAssets.TryGetPackage(packageName);
if (package != null&&package.InitializeStatus == EOperationStatus.Succeed)
{
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} 资源包不存在,请检查是否已经卸载还是卸载异常...");
}
}
}
}