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} 资源包不存在,请检查是否已经卸载还是卸载异常..."); } } } }