共享资源和实例数据-–-behaviac
2026/6/11 7:16:04 网站建设 项目流程

原文

每个行为树都只有一份单独的数据作为资源被加载。

每个使用行为树的对象(Agent)依据这个共享的资源创建独立的实例数据,例如对于Sequence节点,实例数据中只是存储更新到哪个子树,至于Sequence节点的配置信息等则被共享。


  • 加载行为树请使用Workspace::LoadAgent::btload
  • 卸载行为树请使用Workspace::UnLoadAgent::btunload
  • Workspace::CreateBehaviorTreeTask用来根据加载的行为树资源创建实例数据,而它配套的是Workspace::DestroyBehaviorTreeTask
  • 一般情况下,不需要显式调用Workspace::CreateBehaviorTreeTaskWorkspace::DestroyBehaviorTreeTask
    • 初始化的时候调用Workspace::LoadAgent::btload加载可能会用到的行为树
    • 游戏循环的时候,根据需要,调用Agent::btsetcurrent指定该Agent当前的行为树,后续Agent::btexec更新的就是当前行为树,除非再次调用Agent::btsetcurrent修改当前行为树
    • 退出的时候,调用Workspace::UnLoadAgent::btunload,或Workspace::UnLoadAll卸载行为树资源。而行为树实例是在Agent::btsetcurrent的时候被创建的,释放Agent的时候被Agent负责释放
  • C#代码是同名类型里的同名函数,如Workspace.LoadAgent.btload

评论

  • pan 2017年5月24日 18:09

​ 我在所有的tutorials中都没有看到过Agent::btunload这个函数被调用过,什么时候需要调用这个btunload?
是否在同一个agent实例多次加载不同的行为树前需要先btunload一下,
而在销毁agent的时候无需做这个btunload的操作,agent::destroy会自动进行btunload?

  • jonygli2017年5月24日 19:38

​ 对的。一般情况,不需要显示的调用btunload。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询