• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱
欢迎来到 behaviac Q&A。 您在bbs里的问题,管理员会当下就收到通知,不要担心管理员看不到您的问题。也请在bbs里提供您的email,这样就可以第一时间收到关于回答,评论的email的通知了。 为了节省大家的时间,请表达好你的问题,提供必要上下文,版本号,平台信息,重现步骤等。

执行另一棵子树时,原有子树状态的清除问题

0 喜欢 0 不喜欢
37 浏览
我们的行为节点都是类似发命令给其他模块执行的,当结束或者中断行为节点的执行时,要给其他模块发命令告知行为结束或者中断,相应的模块做清除,比如说光效模块。但是假如使用的选择分支或者事件使得NPC有可能在执行某棵子树还没结束的情况下切换执行另外一棵子行为树,这种情况下原有子树的行为节点就没机会给相应的模块发行为结束或中断的指令了。对于类似这种系统和使用场景,有没好的处理方案,可以在切换子树的情况下,对原有的行为节点产生的效果进行清除。

类似场景:一只NPC平时做漫游,当有人点击NPC时,则清除漫游的效果并做被点击的AI表现。
最新提问 8月 17 用户: huangzz (220 分)

1个回答

1 喜欢 0 不喜欢

节点可以配置前置和后置附件,其中后置会在行为树节点退出的时候被执行到(不管是自己正常执行退出,还是被事件打断切换到另一个行为树时退出)。

所以,你可以在你说的光效模块(或漫游模块)的行为树节点上添加一个后置,该后置上配置一个方法,这个方法里面做你的清楚操作就行了

后置用法请参考:

http://www.behaviac.com/attachment/

最新回答 8月 17 用户: cainhuang (33,810 分)
非常感谢这么快回复。

前置和后置附件可以解决问题,不过每个节点都有可能被打断,这样子就几乎要在每个节点设置后置处理节点,会稍微麻烦一点,另外要不要应该是程序实现问题,这样子就要让设计人员也要理解并处理这种清除问题,不知道有没更好的方案
那就把这个带清除功能的后置附件放在相对靠根节点的节点,这样其他子节点被打断,都会执行这个靠根节点的节点的后置操作了
...