2025/12/26 9:44:05
网站建设
项目流程
群晖做自己的电影网站,智慧团建电脑版注册登录入口,网站建设 企炬江阴,怎样做旅游摄影网站原文
在运行时端#xff08;下面以C版来加以说明#xff0c;C#版基本类似#xff09;#xff0c;整个组建的更新可以通过Workspace::Update()函数来执行#xff0c;该函数主要包括两大功能#xff1a;
调用DebugUpdate()函数来更新一些连调和热加载相关的功能。根据m_b…原文在运行时端下面以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()了。