[Unity3D] 通过修改PlayMaker源代码实现进化版的FSM

PlayMaker是我很喜欢的Unity3d开发插件,事实上游戏开发本身就是一个对[状态]的控制,FSM Editor的可视化编辑器完美的实现了这一点。

但是PlayMaker对于深度开发者而言是不友善的, 因为它没有使用接口来规范类型定义,所有的类都必须继承于PlayMakerFSM类。而PlaymakerFSM是MonoBehaviour的子类。换言之,假如我需要一个 NetworkBehaviour同时又要在上面实现FSM,在PlayMaker作者提供的框架上是不可能的。

我的需求:

1. 所有的自定义类型,包括继承于MonoBehaviour, UIBehavior, NetworkBehaviour的类都需要能成为一个FSM载体。并且能够在FSM Editor中编辑。

2. 摒弃PlayMakerFSM自带的基于Unity4时代的网络功能相关的代码


我的解决方案:

1.反编译PlayMakerFSM/ PlayMakerEditor这两个dll

2 用IFSM_Behaviour接口导出 FSM的关键变量和方法。如Fsm对象的引用,SendEvent()方法

3.修改 #1中反编译之后的代码,对所有引用到 PlayMakerFSM类的地方进行解耦合,这里总共改了大约300多处


结果:

相当令人满意,现在我可以使用任何自定义的类型成为一个搭载FSM的载体,例如:

定义一个 UIFSM: 

public class UIFSM : UIBehaviour, IFSM_Behavior

{

//实现IFSM_Behaviour接口

}

同时这个UIFSM可以在PlayMakerFSM Editor 中像任何一个 FSM那样编辑。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值