Gameplay Ingredients是一组用于 Unity 游戏的运行时和编辑器工具:一组脚本的集合,可在制作游戏和原型时简化简单的任务。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

54 行
1.5 KiB

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace GameplayIngredients.Managers
{
[AddComponentMenu(ComponentMenu.managersPath + "Single Update Manager")]
[NonExcludeableManager]
public class SingleUpdateManager : Manager
{
public delegate void SingleUpdate();
List<SingleUpdate> updateList;
private void OnEnable()
{
updateList = new List<SingleUpdate>();
}
public void Register(SingleUpdate update)
{
if (!updateList.Any(o => o == update))
{
updateList.Add(update);
}
else
Debug.LogWarning("SingleUpdateManager: Already found an entry for this SingleUpdate, ignoring.");
}
public void Remove(SingleUpdate update)
{
if(updateList.Any(o => o == update))
{
updateList.RemoveAll(o => o == update);
}
else
Debug.LogWarning("SingleUpdateManager: Did not found a matching entry for given SingleUpdate, cannot remove.");
}
public void Update()
{
// Process all Currently Registered (Copy as Array)
foreach(var update in updateList.ToArray())
{
update?.Invoke();
}
// Remove all nulls (Destroyed Objects) in updateList
updateList.RemoveAll(o => o == null);
}
}
}