前几天Godot“大火”,有朋友在PuerTS群里询问普洱是否有可能支持Godot引擎,希望在Godot中使用Typescript而不是GDScript开发。
但可能大家不知道,Godot其实早已可以结合普洱ts,使用Typescript,我这里写一篇文章记录一下。
1. 通过PuerTS-C#接入Godot
我在普洱ts的readme上就有写到:普洱ts是支持dotnet这类纯C#环境的。普洱ts日常的单元测试就用了dotnet的nunit来驱动。
对于Godot所提供的mono也几乎一样。可以直接用TS对接上它的C#环境。
只要做以下处理即可:
- 将csharp代码放入项目,将Unity专用的一些代码文件删除以及添加PUERTS_GENERAL宏
- 按照mono官方提供的native plugin通信指引,将普洱的动态库放到指定位置。
- 为godot环境编写适用的loader,让普洱能正常读取内置js文件。
笔者将尝试成功的项目传到了github,可以直接参考:github.com/puerts/puer…
2. 直接使用社区贡献的Godot-ECMAScript支持
普洱社区的同学们应该大概听过一个名字:Geequlim,他是普洱社区里做过贡献的大神之一。
在参与贡献PuerTS社区之前,Geequlim就是Godot引擎的贡献者。他其中一个作品便是Godot的Javascript支持: github.com/Geequlim/EC…
该项目将QuickJS解释器植入了Godot,使其可以将JS作为Godot原生支持的脚本之一。
(教程就不放了,文档写的挺清楚了)
虽然加上这个库需要你重新编译Godot引擎,但比起本文第一个方案,这个方案会更节省跨语言的成本(少了一层mono)。
3. 普洱TS项目组对Godot的计划方案
理想情况下,普洱如果要支持godot,最佳方案是上述两种方案的结合:既直接对接godot引擎的核心而非mono层,也要能像普洱本体一样将v8、dts等关键功能引入Godot。PuerTS本身在UE、Node.js上都做了完善的C++绑定支持,移植到Godot上复用也不难。
简单来说,就是在Geequlim/ECMAScript的结构上加入PuerTS C++绑定的代码。
由于并不确定Godot“热潮”的实际需求量,我在我们的github discussion页面中发起了一个调查:github.com/Tencent/pue… 。如果您的项目有强烈意向使用Godot+普洱,请通过点赞告知,我们会选择合适的时机提供该方案的官方支持。