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

ee7vknir  于 2022-11-25  发布在  其他
关注(0)|答案(6)|浏览(206)

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

wljmcqd8

wljmcqd81#

我不禁有一种印象,那就是其他的答案都是由那些不知道自己在说什么的人写的。
下面是在Unity项目中使用F#所需执行的操作:
1.创建一个编译为dll的F#项目。将其构建到Unity项目的assets文件夹中。
1.添加对UnityEngine.dll和/或UnityEditor.dll的引用。更改引用属性,使dll不被复制到build文件夹。当然,您不能以这种方式从Unity编辑器中创建新的F#类,但您可以分配您在F#中编写的类。
目前,您需要启用对. NET 4.5版的(试验性)支持。或者,您可以下载支持.NET 3.5的FSharp.Core.dll的较早版本(请参见here)。
我不能保证您不会因为与FSharp.Core.dll的兼容性问题而遇到麻烦,但这只是一个猜测,因为我还没有亲自测试过它。

p4rjhz4m

p4rjhz4m2#

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

vohkndzv

vohkndzv3#

是的,你可以使用F#作为第一级语言作为C#在统一。这里有一篇关于它的文章link
这是一个很好的博客,如果你想在Unity中使用F#,我推荐你使用F#作为第二类。2让我来演示一下如何使用。
1.通常我所做的是创建游戏域在F#在.net标准2.0库项目构建它。
1.使统一API兼容性级别.net标准2.0然后
1.将资源/插件中的库项目dll导入Unity
以下是如何在每次构建后自动执行此操作的说明:link
您将得到此错误,以下是解决方案
我已经说过了,我建议不要在Unity中使用F#做任何严肃的工作,因为你将无法交叉编译到其他平台。Unity使用IL2cpp,它不支持F#。简单地说,Unity不支持F#,如果你有像Il 2cpp中的bug这样的问题,Unity将不会修复它,因为它们不支持F#

trnvg8h3

trnvg8h34#

免费的unity3D资产UniFSharp在github上用于集成Unity3D和Visual Studio中的F#https://github.com/zkolenko/UniFSharpv2视频指令UniFSharp在https://habr.com/ru/news/t/699098/

mzmfm0qo

mzmfm0qo5#

没有简单的方法来做到这一点,但如果你真的想做到这一点,我相信你可以使用类似fs2cs:
https://github.com/hsharpsoftware/fs2cs
从理论上讲,你可以编写一个脚本,在你所有的Unity C#文件上调用fs2cs。将它与Unity本身集成将是更具挑战性的部分,但从理论上讲,你可以在保存文件时触发fs2cs转换,Unity可以使用转换后的C#文件。

iugsix8n

iugsix8n6#

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

相关问题