UI渲染合批实践-根据社区文章-下篇(支持原生)

UI渲染合批实践-根据社区文章-下篇(支持原生)

上篇

H5与原生的关系

  • 翻看引擎代码发现,代码分为了两部分,为Ts层和c++层。通过jsb绑定,ts/js能够直接调用c++实现的类库。具体可参考以下论坛文档:使用JSB手动绑定

  • 如果ts代码,并没有真正调用到c++层对应的方法,那么原生那边自然就不会生效了。因此,如果你需要定制引擎的话,那么修改了ts类之后,可能还需要修改对应的c++类。

上篇的技术要点

  • 监听director的before_draw和after_draw事件,这两个事件在原生也依然生效。

  • 在before_draw的时候,临时改变children的结构,在after_draw的时候,再还原回去。

上篇为啥只支持H5,不支持原生?

  • 在上篇,笔者在改变children结构的时候,是这样写的:

    
    this.node["_chidren"] =
    
    
  • 这样的调用,只会在H5平台生效,在c++是不生效的。

如何支持原生

优点

  • 无需定制引擎,不修改任何引擎代码。
  • 支持嵌套mask。
  • 同时支持H5和原生。

ps,笔者正在寻找base广州的机会,如果合适的话,可以私信我,谢谢

:rofl:

免费开源了,希望轻喷,哈哈。
UI渲染合批实践-根据社区文章-终篇(免费开源)