调研到的结果:
Native plugin的好处:
1、资源、代码、核心算法保密(例如渲染算法、加密算法等)
2、性能提高(c++库效率比C#要高一个数量级,即便是il2cpp也有极大差异)
3、前后端都会使用的功能(例如生成的行走层,客户端和服务器都需要访问)
4、不用修改代码就能扩充接口,例如目前Unity还不支持Multi indirect draw,但是图形API和硬件很多都已经支持了,可以通过这种方式进行扩充。
坏处:
1、如果有渲染相关的功能,每种图形API都要有对应的实现。不过shader可以统一使用hlsl,使用HLSLcc编译成对应平台的shader,参考:unwind:跨平台引擎Shader编译流程分析。
2、调试不方便。Windows下使用VS直接钩挂进程可以单步调试,Mac下没试过。
有价值的资料:
1、官方的开源项目对于学习Native rendering很有帮助,但是框架不好:iOS下还需要将plugin的源码拷贝到Xcode里,做不到保密,开发流程也很低效。
2、框架建议使用https://github.com/kyochow/xor_unity_native统一用Cmake进行编译,并且所有平台都编译出静态或者动态库,直接拷贝到Unity工程里就能用。
3、DligentGraphics有个Unity的Native Plugin
http://diligentgraphics.com/diligent-engine/integration-with-unity/