-
文档版本:3.6.0
https://docs.cocos.com/creator/manual/zh/advanced-topics/jsb-sebind.html
- 具体的问题或改进建议:原生插件示例文档和 sebind 使用教程文档都只示例了在 console 里调用 native 的函数,而没有示例如何在 TS 脚本里调用 native 。
我正在给一个 Native 动态库编写 Cocos Creator 的 TS 封装层接口,通过 3.6 的“原生插件”功能来实现,目前已经在 console 里跑通了 native 的函数调用。
但是目前不知道如何正确的编写 Native 对应的 TS 接口,先尝试了编写一个 .d.ts 文件,export declare class XXX ,然后在游戏场景的 TS 脚本里去使用这个类,但发现一旦写了 let xxx = new XXX() 后,原生插件导出就会报错说 “error: [build-script]Error: ‘XXX’ is not exported by file://…d.ts, imported by file://…aaa.ts”,而去掉这行 new 就能成功导出
而如果不编写 .d.ts 而是直接编写一个空实现的 .ts 即 export class XXX 里面的函数都提供一个空实现,则能正常运行,但是通过游戏脚本里的调用实际上会走到这个空实现里,然而此时在 console 执行一模一样的代码却能走到 Native 里(能触发 Xcode 断点)而不是走到空实现里
希望 sebind 或原生插件文档能示例一下如何在 TS 里调用 native 函数(以及如何在 native 调用 TS 的函数),提供一个最佳实践。另外也需要示例一下如何打包、分发包含 TS 接口文件的原生插件(用户要如何导入这个原生插件并调用插件提供的 TS 接口)