• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱

并行 节点 的问题

0 喜欢 0 不喜欢
445 浏览

image

1.我在alwaysRun()函数里放置了一个回调函数  所以alwaysRun()函数是一直运行的  但是在并行的下面循环就是不执行  不知道问什么

2.我把alwaysRun()函数里的回调函数  换成一个while()循环,但是下面的循环就是不执行

不知是设置什么错误了么  

并行后面的两个函数  不是在两个线程里么 

我想要两个线程一样并行运行的效果!

只是菜鸟,希望解答  谢谢

最新提问 3月 25, 2016 用户: herozxb (140 分)
修改于 3月 25, 2016 用户:herozxb

1个回答

0 喜欢 0 不喜欢

首先请仔细阅读http://www.behaviac.com/docs/zh/articles/concepts/,并且最好实测里面附带的例子,深刻理解行为树的概念。

行为树的概念里,每个节点执行的时候,每次执行的时候都是个时间片。如果里面的逻辑是个‘死循环’,就会‘卡死’在那里,后续的就不会执行了。这样的想法不符合行为树的概念。

如果需要一个循环,可以加一个循环节点来管理一个动作节点。

image

并行虽然名字是并行,实际上还是单线程来执行的,只是逻辑上是子节点同时执行。

另外最直接的办法是读Parallel的代码Parallel::ParallelUpdate:

https://github.com/TencentOpen/behaviac/blob/master/src/behaviortree/nodes/composites/parallel.cpp

看到现在还要问想实现两个线程怎么做?

如下图,把你的动作拆分成动作片,再加上循环。上面用并行:

image

 

最新回答 3月 25, 2016 用户: jonygli (57,510 分)
修改于 3月 25, 2016 用户:jonygli
...