首页 > 其他分享 >Ue5 行为树执行流程

Ue5 行为树执行流程

时间:2023-02-08 10:55:51浏览次数:30  
标签:流程 BehaiorTreeInstanceId 黑板 实例 Ue5 执行 行为 节点

1,处理黑板

UseBlackboard()(当行为树资源有黑板,并且当前控制器没有黑板或者两个黑板不一样时执行)

2,加载并发起行为树

1,若未初始化行为树组件,新建行为树组件对象
2,BTComp->StartTree()
	1,找到树的根节点
	2,若行为树已执行并且根节点相同直接返回(所以同一个角色运行两次相同的行为树,他并不会中断当前行为并重新执行任务)
	3,StopTree()
	4,初始化新的行为树:ProcessPendingInitialize()
		1,清除所有实例
		2,获取行为树管理器,并添加活跃组件
		(BehaviorTreeManager的主要作用就是处理行为树的资源)
		(这个活跃组件数组看起来没怎么用到,组件的Tick走的也不是这里,可能是给开发者用的?)
		3,新增实例:PushInstance()
			1,检查是否可以加载行为树:
				1,检查黑板:如果黑板不一致,则不能使用这颗行为树
				2,检查能不能获取BTManager
				(行为树管理器)
				3,如果是运行子行为树,检查能不能执行这棵子树
				(调用CanPushSubtree()判断,平行节点的CanPushSubtree返回为false,所以平行节点下面不能Runbehavior)
			2,加载树:BTManager->LoadTree()
				1,处理每个节点的信息:InitializeNodeHelper()
					1,父节点
					2,执行顺序
					3,内存大小
				2,将信息保存在LoadedTemplates中
			3,初始化BehaviorTreeInstance与BehaiorTreeInstanceId(看着似乎可以用KnownInstances找到的实例Id)
			(BehaiorTreeInstanceId保存了行为树的各种公共信息,也可以通过这些信息来确定一颗行为树,区分BehaviorTreeInstance。)
            (BehaiorTreeInstanceId同时预留了部分空间,用于保存执行行为树时的状态等信息用于回滚数据)
				1,实例是直接new了一个对象
				2,实例Id:UpdateInstanceId
				(用KnownInstances去重,没有则新增一个BehaiorTreeInstanceId)
			4,将创建好的实例BehaviorTreeInstance推入InstanceStack中(可用InstanceStack找到所有实例)
			5,发起请求:RequestExecution()
				执行新的任务并在最后ScheduleExecutionUpdate():ScheduleNextTick()

3,执行行为树逻辑

1,tickComponent
	1,执行请求:processExecutionRequest()
		1,搜索前的准备
		2,搜索
		3,搜索后的检验与处理

待更新

标签:流程,BehaiorTreeInstanceId,黑板,实例,Ue5,执行,行为,节点
From: https://www.cnblogs.com/whitelily/p/17100961.html

相关文章

  • d融合窗口之后的,如何执行该窗口方法
    通常我们这样设计:MyForm:TXXXXForm;然后MyForm :=TXXXXForm.Create(Self);如果其他Form调用MyForm方法:MyForm.mothed;采用窗口融合方法后,一般不会采用指定变量MyF......
  • Linux 目录的可执行权限的含义
    总所周知:Linux的文件和目录的权限,只有RWX三种。r(Read,读取)对于文件:具有读取文件内容的权限对于目录:具有浏览目录的权限w(Write,写入)对于文件:具有新增,修改,删除文......
  • 16 shell流程控制命令
      加x避免为空:            脚本:   运行:              (())双小括号内部可以写任何数学式子,使用<=......
  • 如何让.sh脚本可以在任意地方都可执行?
    将.sh脚本文件加入可执行程序路径中。打开终端,执行以下命令:sudoln-s<你的脚本文件路径>/<脚本文件名>.sh/usr/local/bin/<脚本文件名>使用chmod+x命令将.sh脚本设置......
  • TagUI机器人流程自动化搭建与简单脚本#这是我在51CTO博客的第一篇博文
    这是我在51CTO博客的第一篇博文。下载TagUI安装包,安装即可:​​TagUIv6.46Windows安装包​​安装好之后,测试一下。新建一个文本文档,在里面输入百度的网址​​https://www.......
  • 测试流程规范(功能)
    刚入门,理解有限,欢迎讨论这里将测试流程简单分为4个阶段:需求阶段、测试准备阶段、测试执行阶段、总结阶段每个阶段对应不同的“目的、测试工作内容、关注点、产出”每个......
  • 无线产品上架亚马逊日本站TELEC认证流程
    TELEC认证也称MIC认证,别名GITEKI认证(亚马逊会称为GITEKI认证)。TELEC(TelecomEngineeringCenter)是日本无线电设备符合性认证的主要的注册认证机构,MIC(MinistryofInternalA......
  • 描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工 作流程?
    用户发送请求至前端控制器DispatcherServlet;DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;处理器映射器根据请求url找到具体的处理器,生成......
  • 网络安全等级保护测评工作流程及工作内容
    一、网络安全等级保护测评过程概述网络安全等级保护测评工作过程包括四个基本测评活动:测评准备活动、方案编制活动、现场测评活动、报告编制活动。而测评相关方之间的沟......
  • 对Django框架架构和Request/Response处理流程的分析
    一、处理过程的核心概念如下图所示django的总览图,整体上把握以下django的组成:​​​​核心在于中间件middleware,django所有的请求、返回都由中间件来完成。中间件,就是处理H......