Unity IFramework 框架学习笔记 2021 (四): ActionNode(节点模块)

ActionNode(节点模块)

附上IFramework 下载地址:IFramewrok
IFramework QQ交流群:782290296

节点模块,该模块提供一些节点,比如说顺序节点,循环节点等等,等我们指定的函数可以去周期性的执行或者是按顺序执行,反正就是按照一定的逻辑去执行。这就是节点模块。

该模块的核心类其实就一个,就是ActionNode。但是我们不先讲这个,还是从使用入手,该模块向外提供的api在ActionNodeExtension类当中,这是一个静态类,里面封装了一系列的静态扩展函数,跟之前的Tween模块类似。

该类中有一个入口的api。
在这里插入图片描述
就是这个Run方法。我们可以理解为这是一个提供获取具体节点对象的方法。比如说你要获取一个顺序节点对象或者是循环节点对象,就传递对应的类型,那么他会先new一个NodeIterator的对象,那么NodeIterator是什么呢,我们简单看一下。

在这里插入图片描述
他的Config方法就是将该节点缓存起来,并将自身的movenext函数加进全局的update也就是更新函数当中,而自身的movenext又去调用节点的movenext函数,所以我们节点的movenext函数则会一直去调用,直到返回false。
继续回倒上面的Run方法,获取一个具体的节点对象后返回。可是我们都还没传递方法,怎么就返回了。我们往下面看,会看到有几个静态扩展。
在这里插入图片描述
方法太多了,我们看几个当例子,我们会看到,这个静态扩展,适用于我们的节点类对象的,可以看到旁边的泛型约束,所以我们返回的节点类可以直接去点出这些方法,这样也就实现了链式编程。然后我们看到函数具体做什么,函数将传进来的委托,赋值给了我们节点类的OnBegin,OnCompelete,然后再返回出去,这个返回操作就是为了实现链式编程。那么我们进去节点类看。
在这里插入图片描述
这个ActinoNode是所有节点类的基类。我们可以看到刚才赋值的三个属性了,这分别是三个委托,我们继续往下看。
在这里插入图片描述
movenext方法,代码很简单,当begin(开始调用)委托未调用则调用一下,然后调用onMovenext(每帧调用),当节点逻辑完成了,执行onCompelete方法(当结束调用)。但是我们会发现,这里好像不管是begin还是oncompelete都有两个。一个首字母大写一个小写,其实我们刚才从外部的静态扩展赋值的是首字母小写的。也就是一个委托事件。而大写的在这里。

在这里插入图片描述
这三个是由子类去重写的。这三个是让子类去实现,顺序,或者循环,就是去编写按照一定的规则去调用我们传进来的函数的。而上面由外部传递进来的三个方法则是用户具体的业务需求。仔细想想应该不难理解。然后我们再来去看下具体的节点类。
我们就看一个吧,其他都是大同小异,只是逻辑不同。
在这里插入图片描述
看到这个,条件节点。我们只要看OnMoveNext方法就可以了,调用传进来的委托方法,这个委托方法,是我们传递进来的判断条件,这个委托要返回一个bool值,而这个返回的值,在我们的ActionNode当中的MoveNext就有调用。
在这里插入图片描述
当子类中的OnMoveNext方法返回false,则节点结束。其实核心在于ActionNode,整个并不是很难理解。希望对大家有所帮助。

感兴趣的小伙伴希望可以支持下IFramework,顺便给个小星星:IFramewrok

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值