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#のコードを呼ぶ方法(やその逆も)やコンパイラの変更についての情報もあります。アクセスしてみてください。