从零开始写,我希望 Buff 系统由三部分组成
BuffSystemSingleton 用于存 Buff 对象池和 Buff 字典,提供创建 Buff,回收 Buff 的功能
BuffManager 不继承 mono,是某个 mono 的一个成员,存储一个 Buff 列表,为主人 mono 提供 Buff 数据
IBuff 定义 Buff 类和 Buff 的基本行为
写到 Buff 池的时候
Assets/MeowACT/Scripts/BuffSystem/BuffSystemSingleton.cs
// ----------------------------------------------
// 作者: 廉价喵
// 创建于: 27/03/2022 10:00
// 最后一次修改于: 27/03/2022 10:00
// 版权所有: CheapMiaoStudio
// 描述:
// ----------------------------------------------
using System.Collections.Generic;
using UnityEngine;
namespace MeowACT
{
/// <summary>
/// Buff 系统管理器
/// </summary>
public class BuffSystemSingleton : MonoBehaviour
{
/// <summary>
/// Buff 系统管理器管理器单例
/// </summary>
private static readonly BuffSystemSingleton singleInstance;
/// <summary>
/// Buff 系统管理器管理器单例
/// </summary>
public static BuffSystemSingleton SingleInstance => singleInstance;
/// <summary>
/// buff 字典
/// </summary>
private Dictionary<int, IBuff> buffMap = new Dictionary<int, IBuff>();
/// <summary>
/// Buff 池
/// </summary>
private static Stack<IBuff> buffPool = new Stack<IBuff>();
/// <summary>
/// Buff 系统管理器管理器单例的静态构造函数
/// 首次实例化该类或任何的静态成员被引用时调用该静态构造函数
/// </summary>
static BuffSystemSingleton()
{
var gameObject = new GameObject();
DontDestroyOnLoad(gameObject);
singleInstance = gameObject.AddComponent<BuffSystemSingleton>();
}
public void Register(IBuff

本文探讨了在Unity中构建ACT战斗系统时,如何设计Buff系统。作者从BuffSystemSingleton、BuffManager和IBuff接口出发,讨论了是否需要Buff池,并引入了Blackboard的概念作为逻辑桥梁。在实现过程中,作者面临如何处理速度增益等具体Buff效果,以及如何在玩家和敌人之间通用的问题。同时,对比了多种不同的Buff系统实现方案,并提出了对UnityEvent和C#事件的思考。
最低0.47元/天 解锁文章
1118

被折叠的 条评论
为什么被折叠?



