弄一个代理基类接口 ![[Pasted image 20240410105248.png]] 动作映射管理类,用于把目标和代理,关联起来 ![[Pasted image 20240410105311.png]] 目标基类接口,包含标签,优先级等 ![[Pasted image 20240410105403.png]] 更新数据函数,和打断相关,基类接口 ![[Pasted image 20240410105432.png]] 计划队列接口 ![[Pasted image 20240410105506.png]] 触发器的基类接口,包含优先级,是否触发的布尔判断,还有更新的帧函数 ![[Pasted image 20240410105605.png]] 树节点,其中包含,对应该节点的,默认ID常量,父节点,动作事件IActionHandler接口,对应节点的,当前状态,目标状态,完成的消耗等 ![[Pasted image 20240410105708.png]] 树节点逻辑的构造函数,就是初始化,各个声明的变量,和调用State状态的CreateNew接口,创建俩空的新状态,分别对应当前状态,和目标状态 ![[Pasted image 20240410154826.png]] 树逻辑,其中包含,创建一个新的树节点,还有创建一个顶部节点,调用了树节点的,重置ID逻辑,将ID归零 ![[Pasted image 20240410105955.png]] ![[Pasted image 20240410105901.png]] 回到,动作对象映射管理类接口,除了获取动作事件外,还有获取目标、设置和获取游戏数据函数接口,是通过key配合字典容器,进行这一系列操作 ![[Pasted image 20240410113347.png]] 抽象映射基类,继承自IMaps映射接口,其中声明了,几个字典容器,分别用来存储,事件接口,实现目标,游戏数据相关; 还有两个变量,代理_agent和对对象池_pool; 在构造函数中,对它们完成初始化即可; 对应调用的,各个初始化函数,如下所示; ![[Pasted image 20240410113751.png]] ![[Pasted image 20240410114034.png]] ![[Pasted image 20240410114114.png]] 两个接口,都是从字典容器,获取对应的动作和目标数据 ![[Pasted image 20240410114149.png]] 而添加,动作和目标,到字典容器接口,也是同理,配合对象池_pool管理即可 ![[Pasted image 20240410114357.png]] 设置和获取,游戏数据,对_gameData字典容器操作即可 ![[Pasted image 20240410114234.png]] ![[Pasted image 20240410114313.png]] 代理基类接口中,也会有对应的映射接口 ![[Pasted image 20240410114507.png]] 这是继承自,动作事件接口IActionHandler的抽象类,声明了对应的Action动作和Label标签; 还有ActionExcuteState枚举,是对应有限状态机FSM的,用来设定,当前动作所处的状态; 还声明了对应的代理_agent,动作完成对应的Action回调_onFinishAction,映射_map; ![[Pasted image 20240410114633.png]] 构造函数中,id自增,其他声明的变量,也完成初始化,设定当前动作的枚举是INIT初始化; 而SetAgentData是覆盖,当前状态的state,SetAgentState是新增一个键值对数据; ![[Pasted image 20240410115011.png]] ![[Pasted image 20240410115203.png]] 动作完成的异步回调OnComplete,使用[[async]]; 而CanPerformAction虚函数,是返回对应Action动作的VerifyPreconditions先决条件; AddFinishCallBack接口,是完成回调函数的赋值; ![[Pasted image 20240410115233.png]] ![[Pasted image 20240410115411.png]] 几个获取游戏数据的接口,都是调用映射map的对应接口即可 ![[Pasted image 20240410115512.png]] 动作的三种状态:进入、进行中、结束 ![[Pasted image 20240410115539.png]] 事件管理的基类接口,包含 是否执行动作的布尔判断,效果和动作的映射map字典容器,还有默认动作的表情标签 ![[Pasted image 20240410120741.png]] 其余的函数接口 ![[Pasted image 20240410120936.png]] ![[Pasted image 20240410120958.png]] 抽象类ActionManagerBase,是继承实现,事件管理接口,声明了几个容器,存储动作、动作状态、能打断当前计划的动作; 还有动作本身的状态机,动作状态的 状态机; 动作对应的_agent代理,还有是否在执行的布尔标志位; ![[Pasted image 20240410121032.png]] 动作和效果,对应的map映射关系,其中Effect效果,指的是,动作执行之后的状态,还有动作完成的回调 ![[Pasted image 20240410121253.png]] ![[Pasted image 20240829131009.png]] 初始化,动作和状态映射关系的具体逻辑,先foreach遍历,动作字典_actionHandlerDic,拿到其中的handler,然后提取出,它的Effects影响状态; 如果不为空,就拿到对应的key,是调用了state状态类中_dataTable状态字典容器的key总集,作为EffectsAndActionMap映射字典容器的key; 然后构建键值对,完成key和value的映射即可; ![[Pasted image 20240410121521.png]] ![[Pasted image 20240410121916.png]]