当前位置: 首页 > news >正文

等待节点-–-behaviac

原文

等待(Wait)节点在指定的数值内(单位根据自己的使用场景来定)持续保持为运行(Running)状态,数值到达之后则返回成功,如下图所示:

需要配置“持续时间”,可以是常数、属性或方法的返回值(支持double和int类型),如下图所示:

在工作区配置窗口中,可以勾选左下角的“使用整数值”来表示是否使用整数值,如下图所示:

如果勾选了“使用整数值”选项,那么在导出代码文件behaviac_agent_meta.cpp中,会自动生成Workspace::GetInstance()->SetUseIntValue(true)。

等待节点的更新逻辑是:

boolbUseIntValue=Workspace::GetInstance()->GetUseIntValue();if(bUseIntValue){longlongtime=Workspace::GetInstance()->GetIntValueSinceStartup();if(time-this->m_intStart>=this->m_intTime){returnBT_SUCCESS;}}else{doubletime=Workspace::GetInstance()->GetDoubleValueSinceStartup();if(time-this->m_start>=this->m_time){returnBT_SUCCESS;}}

因此,只有保证Workspace::GetInstance()->GetIntValueSinceStartup()或Workspace::GetInstance()->GetDoubleValueSinceStartup()正确的返回从游戏启动到现在的总时间,等待节点才能正确工作。

如果勾选了“使用整数值”选项,那么Workspace::GetInstance()->GetUseIntValue()将返回true,并且该总数值需要通过Workspace::GetInstance()->SetIntValueSinceStartup(long long value)设置,可以在自己的游戏更新函数中调用该函数。

如果没有勾选“使用整数值”选项,那么Workspace::GetInstance()->GetUseIntValue()将返回false。该总时间需要通过Workspace::GetInstance()->SetDoubleValueSinceStartup(double value)设置,可以在自己的游戏更新函数中调用该函数。

注意:在C#代码中相应的接口需改为Workspace.Instance.IntValueSinceStartup或Workspace.Instance.DoubleValueSinceStartup,默认实现方式是返回Unity的系统时间Time.realtimeSinceStartup,一般情况无需自己重新实现,直接使用即可,不用类似C++的接口每帧更新时调用Workspace.Instance.IntValueSinceStartup或Workspace.Instance.DoubleValueSinceStartup为其赋值。

具体的执行逻辑可以查看behaviortree/nodes/actions/wait.cpp

http://www.cnnetsun.cn/news/119562.html

相关文章:

  • Nginx性能优化实战:从基础配置到高级调优的完整指南
  • ThingsGateway:开源智能设备管理平台的终极指南
  • KolodaView开源项目贡献指南
  • 5‘-Thiol Modifier C6 S-S Amidite,5‘-硫醇修饰剂 C6 双硫键核苷酸酰胺化试剂
  • Python:SOLID 面向对象设计原则
  • 专业级鼠标性能测试工具:从数据采集到精准分析的全链路解析
  • Magpie-LuckyDraw:5分钟上手的多平台炫酷抽奖系统终极指南
  • 魔兽争霸III现代化修复工具:全面解决兼容性问题的终极指南
  • 数字内容获取革命:智能绕过付费墙的完整解决方案
  • 256台H100服务器算力中心的带外管理网络建设方案
  • 深入理解指针(7)
  • 从卷 Java 到冲网安!计算机人 2025 自救路线:附 40-150 万安全岗 + 技能衔接清单
  • python大数据的基于k-means算法的校园美食推荐系统_j4eg7g7z--论文
  • MouseTester专业指南:3步完成鼠标性能精准诊断
  • [鸿蒙2025领航者闯关]图标资源统一管理
  • 区分__proto__和prototype
  • 西门子PLC地址知识点
  • EmotiVoice开源项目依赖项管理最佳实践
  • 如何彻底解决腾讯游戏卡顿问题:sguard_limit资源限制器完整指南
  • MiniGPT-4终极优化指南:5个简单技巧实现3倍推理加速
  • 鼠标性能测试终极指南:从新手到专家的完整解决方案
  • 终极指南:如何用pbxproj轻松玩转Xcode项目文件
  • 移动端AI部署革命:Paddle-Lite如何让深度学习模型在手机上流畅运行
  • 类型安全强化学习实战:从Gymnasium类型提示到项目稳健性提升
  • OBS直播教程:OBS多路推流插件如何下载?如何安装?怎么用?
  • ComfyUI-Manager依赖安装:5分钟搞定pip与uv的完美切换
  • 5步精通libgit2跨平台编译:从依赖管理到性能优化
  • DiT架构演进:从理论突破到工业级扩展的技术实践
  • EmotiVoice只服务于现实世界的积极连接
  • 20、嵌入式处理器基于软件的自测试技术解析