Files
aibis-dream/Assets/Scripts/Framework/ActionKit/Queue/MonoActionQueue.cs
T
dingyuntian 9f20ef52d8 UI工具翻新
1. 增加UI工具
2. 增加设置页面
3. GameLoop更新
4. 导入ActionKit工具
2025-04-21 18:53:30 +08:00

52 lines
1.3 KiB
C#

using System.Collections.Generic;
namespace AibisDream.Kit
{
internal interface IActionQueueCallback
{
void Call();
}
internal struct ActionQueueRecycleCallback<T> : IActionQueueCallback
{
public SimpleObjectPool<T> pool;
public T action;
public ActionQueueRecycleCallback(SimpleObjectPool<T> pool, T action)
{
this.pool = pool;
this.action = action;
}
public void Call()
{
pool.Recycle(action);
pool = null;
action = default;
}
}
internal class ActionQueue : Singleton<ActionQueue>
{
private readonly List<IActionQueueCallback> _actionQueueCallbacks = new();
public static void AddCallback(IActionQueueCallback actionQueueCallback)
{
Instance._actionQueueCallbacks.Add(actionQueueCallback);
}
// Update is called once per frame
private void Update()
{
if (_actionQueueCallbacks.Count > 0)
{
foreach (var actionQueueCallback in _actionQueueCallbacks)
{
actionQueueCallback.Call();
}
_actionQueueCallbacks.Clear();
}
}
}
}