• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱
欢迎来到 behaviac Q&A。 您在bbs里的问题,管理员会当下就收到通知,不要担心管理员看不到您的问题。也请在bbs里提供您的email,这样就可以第一时间收到关于回答,评论的email的通知了。 为了节省大家的时间,请表达好你的问题,提供必要上下文,版本号,平台信息,重现步骤等。

C# 格式的行为树可以做到不触发GC吗?

1 喜欢 0 不喜欢
134 浏览

官方文档:以下2条

  1. 定义BEHAVIAC_RELEASE,从而不编译诸如logging,socketing,热加载等开发功能,提供最高效率,也不支持连调功能。
    • C++下,在config.h中定义BEHAVIAC_RELEASE为1
    • C#下,在Assets目录下的smcs.rsp文件中,定义BEHAVIAC_RELEASE
    • 如果想选择打开或关闭调试功能而不是完全的关闭,则不需要修改任何关于BEHAVIAC_RELEASE的定义,通过behaviac::Config::SetLogging和behaviac::Config::SetSocketing来控制是否打开logging和socketing。
  2. 不使用xml或bson格式,而是使用C++或C#格式
    – C#下,还需要那些在行为树中使用到的Agent的成员都是public的(非public的成员即使通过C#代码访问也需要使用反射系统来进行,会导致GC Alloc以及性能损失)。

目前实现这两条后发现。还是有3MGC。还有哪里需要注意呢??

最新提问 5月 26, 2016 用户: qq_57072b4f10c42 (510 分)

1个回答

0 喜欢 0 不喜欢
 
已采纳
  • 首先做到上述的这两条
  • 对于BEHAVIAC_RELEASE,请确保它真的发生了作用,最保险的是删除临时部分。

image

然后如果还是有GC,很可能是你自己的函数的问题了。

另外,需要指出的是,使用c#的导出格式,可能会对使用热更新有一定的不便。我们马上就会发布一个新的版本,可以支持即使在导出格式为xml、bson的时候也是GC free的,那么就可以使用behaviac来实现热更新了。

 

 

最新回答 5月 27, 2016 用户: jonygli (57,510 分)
修改于 5月 27, 2016 用户:jonygli
多谢多谢。期待xml版本
...