F#可以与Unity(游戏引擎)一起使用吗?

时间:2017-04-27 20:08:45

标签: unity3d

我进入Unity,想知道我是否可以使用F#而不是C#,因为我更喜欢语法。我猜不是,因为它运行的环境非常不同,但也许有些东西会交叉编译代码或其他我不想的东西。

5 个答案:

答案 0 :(得分:25)

我无法提供帮助,但却会产生这样的印象:其他答案是由那些不太了解他们所说的人写的。

这是在Unity项目中使用F#所需要做的事情:

  1. 创建一个编译成dll的F#项目。将它构建到Unity项目的assets文件夹中。
  2. 添加对UnityEngine.dll和/或UnityEditor.dll的引用。更改引用属性,以便将dll复制到构建文件夹。 当然,您无法通过这种方式在Unity编辑器中创建新的F#类,但您可以分配您在F#中编写的类。
  3. 目前,您需要启用.NET-version 4.5的(实验性)支持。或者,您可以下载支持.NET 3.5的旧版FSharp.Core.dll。 (见here)。

    由于与FSharp.Core.dll的兼容性问题,我无法保证您不会遇到麻烦,但这只是猜测,因为我还没有测试过它自己。

答案 1 :(得分:2)

通过遵循这个Github项目,我有一次成功做到这一点:https://github.com/eriksvedang/FSharp-Unity,我认为这与Lars Kokemohr上面的答案大致相同。我还没有在最新版本的Unity / Mono中测试它。

答案 2 :(得分:0)

是的,您可以统一使用F#和C#作为一流语言。 怎么样 ? ans
一个想要团结使用F#的人的优秀博客 如果您想使用F#作为我推荐的第二类。 让我展示如何做。

  1. 通常我要做的是在.net标准中以F#创建游戏域 2.0库项目进行构建。
  2. 然后使统一API兼容级别.net标准2.0。
  3. 在Unity的资产/插件中导入库项目dll

每次构建后如何自动执行? ans

在这种情况下,您会得到这个error solution

已经说过,我建议不要与F#.bcs统一做任何严肃的工作,否则您将无法交叉编译到其他平台。 unity使用IL2cpp,但不适用于F#。 用简单的话来说,团结不支持F#,如果您遇到Il2cpp中的bug之类的问题,团结将无法修复bcs,因为他们不支持F#

如果您认为这是错误的提示,请注意说明原因

答案 3 :(得分:-1)

没有简单的方法可以做到这一点,但如果你真的想要实现它,我相信你可以使用像fs2cs这样的东西:

https://github.com/hsharpsoftware/fs2cs

理论上,您可以编写一个脚本,在所有Unity C#文件上调用fs2cs。将它与Unity本身集成将是更具挑战性的部分,但理论上,您可以在保存文件时触发fs2cs转换,Unity可以使用已转换的C#文件。

答案 4 :(得分:-1)

官方支持只有Boo,C#和UnityScript!