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

运行时,BehaviorTask实例的m_status总是为BT_INVALID,导致任务不能被调度

0 喜欢 0 不喜欢
55 浏览

    bool BehaviorTask::onevent(Agent* pAgent, const char* eventName)
    {
        if (this->m_status == BT_RUNNING && this->m_node->m_bHasEvents)
        {
            if (!this->CheckEvents(eventName, pAgent))
            {
                return false;
            }
        }

        return true;
    }

---------------------------

事件的制作与下图一样

image

其中,序列后的动作也参照单元测试采用等待信号

-----------------------

调试发现,id=-1的节点上,this->m_events为空,话说events不应该是在节点id=0的节点上检测吗?

 

 

最新提问 6月 29, 2016 用户: qq_577361708ac21 (600 分)
修改于 6月 29, 2016 用户:qq_577361708ac21

2 个回答

0 喜欢 0 不喜欢
onevent是虚函数,它的实现会根据节点的类型略有不同。

但逻辑基本上是一致的,首先它要求改节点是在运行的,然后节点上有事件,然后才会一层层进去。

status不是运行是不对的。需要通过btexec在运行。
最新回答 6月 29, 2016 用户: jonygli (58,290 分)
0 喜欢 0 不喜欢
试了半天,最后找到解决方法了。

1,根节点(序列+事件附件)后要有一个"等待信号",信号条件可以是一个判定为false的“条件”或者“真”或者“假”

2,FireEvent前要调用btexec,无论有没有updatetick
最新回答 6月 30, 2016 用户: qq_577361708ac21 (600 分)
...