NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/AI/BTImplement.Load.cs

59 lines
1.7 KiB
C#

using BehaviorDesigner.Runtime;
using Cysharp.Threading.Tasks;
using PhxhSDK;
using UnityEngine;
using Constants = Framework.Constants;
namespace Gameplay.BT
{
public partial class BTImplement
{
public class AssetEntry
{
public ExternalBehavior Asset;
public ExternalBehavior InstanceExternalBehavior()
{
var externalBehavior = Object.Instantiate(Asset);
externalBehavior.name = Asset.name;
externalBehavior.Init();
return externalBehavior;
}
}
private async UniTask<AssetEntry> LoadBehaviorAsset(string behaviorName)
{
var path = string.Format(Constants.AI_ASSET_FORMAT_PATH, behaviorName);
if (_loadedRecord.ContainsKey(path))
{
_loadedRecord[path]++;
}
else
{
_loadedRecord.Add(path, 1);
}
var externalBehavior = await AssetManager.Instance.LoadAssetAsync<ExternalBehavior>(path);
if (externalBehavior == null)
{
DebugUtil.LogError("LoadBehavior.LoadBehavior failed, can not find behavior: {0}", path);
}
return new AssetEntry{Asset = externalBehavior};
}
public void UnloadAllRes()
{
foreach (var kv in _loadedRecord)
{
var path = kv.Key;
var count = kv.Value;
for (var i = 0; i < count; i++)
{
AssetManager.Instance.Unload(path);
}
}
_loadedRecord.Clear();
}
}
}