• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱

热加载默认支持吗?

1 喜欢 0 不喜欢
323 浏览
最新提问 3月 9, 2016 用户: cainhuang (33,810 分)

1个回答

0 喜欢 0 不喜欢
 
已采纳

HotReload是否默认支持要看版本及更新方式了。

  • 首先HotReload只在开发版才是打开的。如果定义了 BEHAVIAC_RELEASE 意味着是发行版,属于开发功能的HotReload,连调等功能就不再打开了。
  • 在开发版下,如果是通过 behaviac::Workspace::GetInstance()->Update() 更新Agent的,HotReload就是默认支持的。
  • 但是如果是直接调用Agent的btexec来更新的话,由于 Workspace::DebugUpdate 没有被调用,HotReload就没有被支持,这种情况下,需要自己负责在合适的地方调用 Workspace::DebugUpdate来支持HotReload。请参考更新流程
  • 从下面 Workspace::DebugUpdate 和 Workspace::Update 的代码可以看出,不仅是HotReload,而且实时连调也就是游戏运行时Connect编辑器查看和调试行为树执行情况的功能都取决于是否是通过behaviac::Workspace::GetInstance()->Update() 更新的。
  • 对于C#,API是类似的。behaviac.Workspace.GetInstance().Update()以及 behaviac.Workspace.GetInstance().DebugUpdate()
    void Workspace::Update()
    {
		this->DebugUpdate();

        if (this->m_bExecAgents)
        {
            int contextId = -1;

            Context::execAgents(contextId);
        }
    }
	void Workspace::DebugUpdate()
	{
		this->LogFrames();
		this->HandleRequests();

		if (this->GetAutoHotReload())
		{
			this->HotReload();
		}
	}

最新回答 3月 9, 2016 用户: jonygli (57,890 分)
采纳于 3月 9, 2016 用户:jonygli
...