【问题标题】:Can F# be used with Unity (game engine)?F# 可以与 Unity(游戏引擎)一起使用吗?
【发布时间】:2017-04-27 20:08:44
【问题描述】:

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

【问题讨论】:

标签: unity3d


【解决方案1】:

我不禁觉得其他答案是由不知道自己在说什么的人写的。

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

  1. 创建一个可编译为 dll 的 F# 项目。将其构建到 Unity 项目的资产文件夹中。
  2. 添加对 UnityEngine.dll 和/或 UnityEditor.dll 的引用。更改引用属性,以便不会将 dll 复制到构建文件夹中。 当然,您不能以这种方式在 Unity 编辑器中创建新的 F# 类,但您可以分配在 F# 中编写的类。

目前您需要启用对 .NET 版本 4.5 的(实验性)支持。或者,您可以下载支持 .NET 3.5 的旧版本 FSharp.Core.dll。 (见here)。

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

【讨论】:

  • 根据我在其他地方找到的说明,这似乎是最好的答案,可以完全完成您所描述的内容。
【解决方案2】:

我在某个时候通过关注这个 Github 项目成功地做到了这一点:https://github.com/eriksvedang/FSharp-Unity,我相信这与 Lars Kokemohr 上面的回答大致相同。不过,我还没有在更新的 Unity/Mono 版本中对其进行测试。

【讨论】:

    【解决方案3】:

    是的,您可以统一使用 F# 作为 C# 的一流语言。 这是一篇关于它的文章link
    一个优秀的博客,适合想要统一使用 F# 的人 如果你想使用 F# 作为我推荐的第二类。 让我来看看怎么做。

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

    这里是关于如何在每次构建后自动执行此操作的说明:link

    你会得到这个error,这里是solution

    话虽如此,我建议不要与 F# 一起做任何严肃的工作,因为您将无法交叉编译到其他平台。 Unity 使用IL2cpp,它不适用于 F#。 简而言之,unity 不支持 F#,如果您遇到 Il2cpp 中的错误等问题,unity 不会修复它,因为它们不支持 F#

    【讨论】:

      【解决方案4】:

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

      https://github.com/hsharpsoftware/fs2cs

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

      【讨论】:

        【解决方案5】:

        官方仅支持 Boo、C# 和 UnityScript!

        【讨论】:

        • 目前只支持C#。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多