F#でUnityプログラミング

UnityではC#でプログラミングをするのが一般的です。

しかし私は.NET系の言語はF#しか知りませんし、C#を使う気にはなれません。ですのでTutorial: Using F# with Unity3D 2018.3を参考にF#でUnityプログラミングができるようにしてみました。Macでの作業なのでWindowsでは適宜読み替える必要があります。

1. .NET Core SDKをインストールする

T/O

2. Unityプロジェクトを作成する

T/O

3. F#のclasslibプロジェクトを作成する

ターミナルで作業します。

UnityプロジェクトのルートにFSharpというディレクトリを作成し、そのディレクトリに移動します。dotnetコマンドでF#のclasslibプロジェクトを作成します(-lang F#はzshだと-lang 'F#'と指定する必要がありました)。ビルドしてdllをアセットに追加します。

$ mkdir FSharp
$ cd FSharp
$ dotnet new classlib -lang F#
$ dotnet publish
$ cp bin/Debug/netstandard2.0/publish/FSharp.Core.dll ../Assets/

4. FSharp.fsprojをVisual Studioで開く

T/O

5. 依存関係に必要なAssemblyを追加する

- Unityプロジェクトルート/Library/ScriptAssemblies/Assembly-CSharp.dll

- /Applications/Unity/Unity.app/Contents/Managed/UnityEngine/*.dll

をF#のプロジェクトの依存関係に追加します。

6. ビルド後にdllをコピーする設定を追加する

プロジェクトのオプションでBuild→Custom Commandsを開きます。(Select a project operation)のAfter Buildを選択します。Commandにcp ${TargetPath} ${SolutionDir}/../Assets/を入力します。

これでFSharpのプロジェクトをビルドするとUnityでF#のdllが利用できるようになります。Tutorial: Using F# with Unity3D 2018.3にはF#からC#のコードを呼ぶ方法(やその逆も)やコンパイラの変更についての情報もあります。アクセスしてみてください。

この記事が気に入ったらサポートをしてみませんか?