如何使用 Typescript 编译 .NET 程序集以用于 Unity3d?



Unity3d菜鸟希望使用Typescript进行Unity3d脚本而不是C#或UnityScript(Unity3d的JavaScript-like-but-not-really-JavaScript语言(。

理论上,如果我能将Typescript编译成可以在Unity3d(即Mono(中运行的.NET程序集,我就是黄金。

在您建议现有的 JavaScript-.NET 互操作解决方案(如 Jist 或 JavaScript.NET(之前,我认为它们会不足,因为 Unity3d(以及扩展的 .NET(取决于类型,如果我没记错的话,将 Typescript 转换为 JavaScript 然后使用 Jist/JavaScript.NET 会丢失类型信息。 Typescript .NET编译器将保留类型信息。

参考允许从打字稿代码使用 .NET 程序集(如 Unity3d(的工具的奖励积分。

这里你说你可以写C#。你可以看看Microsoft.ClearScript。它允许您在 .NET 程序中嵌入脚本语言。它内置了对 V8 的支持。如果你能弄清楚如何在Unity中实现它(通过编写一点C#(,那么你就可以使用JavaScript。你可以(虽然不理想(将 TS 代码编译为 JS,然后直接在 Unity 游戏中运行它。在大范围内它会很慢,因为它是解释的,但这是可能的。使用 C# 代码,可以向 JS 公开UnityEngineAPI。这不是最好的解决方案(如果你甚至可以称之为解决方案(,但它有效(或至少应该有效(。我知道我晚了 4 年,但它对其他看到它的人仍然有用。我很想听听你是否找到了任何解决方案,因为你问了这个问题。

编辑:一种性能更友好的方法是使用AssemblyScript,这是一种类似TypeScript的语言,可以编译为WASM。然后,您可以使用类似wasmtime-dotnet的东西来执行WebAssembly。这是一种与上述方法非常相似的方法,但在我看来,这比将 TypeScript 转换为 JavaScript,然后在 V8 中执行它更干净。而且,当然,它应该更有效率,并且可能更难让人们获得你的游戏来源。

我认为Unity做出了一个错误的战略决策,不采用打字稿。军队或前端/全栈nodejs开发人员的规模更大,语言本身是强大而成熟的。这将使所有游戏行业更加开放,从而带来真正的繁荣

回答您的问题,您不能在 unity3d 中使用打字稿。 Unity3d 不支持此功能。

最新更新