news 2026/9/2 12:35:38

运行时端的执行流程-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运行时端的执行流程-–-behaviac

原文

在运行时端(下面以C++版来加以说明,C#版基本类似),整个组建的更新可以通过Workspace::Update()函数来执行,该函数主要包括两大功能:

  • 调用DebugUpdate()函数来更新一些连调和热加载相关的功能。
  • 根据m_bExecAgents来判断是否需要执行所有Agent实例的btexec()函数,可以通过接口Workspace::SetIsExecAgents(bool bExecAgents)对m_bExecAgents进行设置。

具体执行逻辑如下代码所示:

voidWorkspace::DebugUpdate(){this->LogFrames();this->HandleRequests();if(this->GetAutoHotReload()){this->HotReload();}}voidWorkspace::Update(){this->DebugUpdate();if(this->m_bExecAgents){intcontextId=-1;Context::execAgents(contextId);}}

对于C++版,行为树的执行可以调用behaviac::Workspace::GetInstance()->Update()来执行所有Agent实例的行为树,也可以单独调用Agent的接口btexec()来执行单个实例的行为树。

其中,Workspace::Update()会遍历所有的Agent实例并依次执行btexec(),但在自己的游戏项目中,可能在一帧中需要对某些Agent多次调用btexec(),而另一些Agent只需调用一次,这时候就需要单独调用Agent::btexec(),而不是统一调用Workspace::Update()。

Workspace::Update()在调用Agent::btexec()之前,会检查Agent::IsActive()是否为true,如果为false,那么btexec()就不会被调用。

此外,为了支持连调和热加载,请务必保证在自己游戏的更新函数中调用了DebugUpdate()函数。如果已经调用了behaviac::Workspace::GetInstance()->Update(),那么就不需要再单独调用DebugUpdate()。

上述示例代码虽然是C++,但对于C#,也都是同名的。

特别注意:对于C#版,behaviac.Workspace.IsExecAgents默认设为false。

  • 如果将behaviac.Workspace.IsExecAgents设为true,使用behaviac.Workspace.Instance.Update()集中进行更新,Agent自己的更新就不需要调用btexec()了。
  • 如果将behaviac.Workspace.IsExecAgents设为false,则不使用behaviac.Workspace.Instance.Update()集中进行更新,Agent自己的更新就需要调用btexec()了。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 6:01:33

【模板】静态区间最值【牛客tracker 每日一题】

【模板】静态区间最值 时间限制:5秒 空间限制:1024M 网页链接 牛客tracker 牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品&#xff0…

作者头像 李华
网站建设 2026/9/1 22:49:21

三菱PLC组装机学习笔记

三菱PLC组装机,完整项目资料 1、采用三菱FX3U,威纶通触摸屏 2、三个伺服,多工位 3、程序有完整的注释,结构清晰明了。 很好的项目学习资料。 工业02-17.泡棉组装最近在学习三菱PLC的项目,发现这是一个挺有意思的方向。项目用的是…

作者头像 李华
网站建设 2026/9/3 3:39:37

(7-3-05)基于MCP实现的金融投资Agent(5)市场情绪分析测试+ 个股数据测试

7.3.8 市场情绪分析测试文件test_sentiment.py实现了对市场情绪分析工具的测试,涵盖了CNN恐惧与贪婪指数、加密货币恐惧与贪婪指数以及谷歌趋势数据的获取功能。通过模拟数据请求和返回结果,测试了各类情绪指标在不同参数设置(如获取当前数据…

作者头像 李华
网站建设 2026/9/2 20:52:31

【开题答辩全过程】以 高校篮球社团管理系统 为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/9/2 15:11:52

告别机房管理噩梦,首码磁控U位系统来“救场”

机房管理痛点大揭秘在机房管理的日常中,想必不少朋友都被这些问题折磨得苦不堪言。盘点时,面对密密麻麻的设备,人工核对不仅效率低下,还常常因为人为疏忽,导致账实不符。一旦出现错误,后续的核对与纠错工作…

作者头像 李华