尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

运行时端的执行流程-–-behaviac
📅 发布时间:2026/6/19 10:32:15

原文

在运行时端(下面以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()了。

相关新闻

  • 【题解】Luogu P1638 逛画展 Luogu P2564 [SCOI2009] 生日礼物
  • 详细介绍:Spring Boot 整合 Thymeleaf(视图层)
  • DAY37 早停策略和模型权重的保存

最新新闻

  • 上海汽车音响改装选哪家?上海音乐人生,二十年赛事级连锁标杆门店 - 音乐人生汽车音响
  • 技术解析:从Tri-Plane到3D GAN,如何实现高效且一致的神经渲染
  • 通过Selenium实现网页截图来生成应用封面
  • 2026苏州钻石回收实测|国标4C定级,全城无套路靠谱门店变现指南 - 薛定谔的梨花猫
  • C语言宽字符处理:wmemcmp、wmemcpy、wprintf核心函数详解与实战
  • 多模态大语言模型LISA

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号