1. Qiita
  2. 投稿
  3. Unity

UnityでF#を使う (アップデート)

  • 3
    いいね
  • 0
    コメント

はじめに

こんにちは、やのせん(@yanosen_jp)と申します。 普段は、教育用のアプリを作っており、F#は初心者です。以前にUnity で F#を使う 導入編 メモというのを書いたのですが、それから一年ほどたち、補足したい事も出来たので、アップデートとしてちょっと書いてみることにしました。

Unity

Unityというと、F#界隈の皆さんはDependency Injection用のコンテナを想像されるかもしれませんが、そちらの方ではなく、いわゆるゲームエンジンの方です。Unity(ホームページ)を使うことで、PC、スマホ、コンソールなど、幅広いプラットフォームでゲームやアプリを制作することが可能です。最近では、VR(バーチャルリアリティ)アプリの開発環境としても注目されています。

image

UnityでのF#使用環境

UnityはMono 2.6を使用しているため、.NET Framework 3.5相当のC#でスクリプトをVisual Studio Tools for Unity やMonodevelopで書くことが可能です(参考)。

さらに、.NET Frameworkなので、C#だけでなくF#も使えます。ただ、付属のエディタでそのままF#スクリプトを書くことはできず、別にF#プロジェクトを作って、ビルドしたdllをUnityプロジェクトを読み込ませることになります。

.NET Framework 3.5のため、F# 2.0までしか使えない、というのが結構な制約なのですが、現在.NET 4.6 (C#6.0相当) へのアップグレード作業が進められており、2017年のどこかには利用可能になる予定です (参考1)。そうすれば、F# 3.0を利用できるようになるでしょう(ベータ版では動作確認済み)。海外のF#本は多くが3.0前提になっているので、これはありがたいですね。

Unity向けのF#プロジェクトの作り方

標準的なやり方は、Unity で F#を使う 導入編 メモに記載した通りです。つまり

  • Visual StudioでF#プロジェクトを作り、Output先をUnityのAssetフォルダ以下におく(これで、Unity側でコンパイルされる)
  • F#プロジェクトにUnityEngine.dllへの参照を加え、スクリプトを作成してビルドする。

もう一つのやり方は、前の記事を出した後にリリースされたF# kitというUnity用のアセット(プラグインみたいなもの)を使う方法です。

image

こちらの方は、Unityのエディタ拡張スクリプトが付属しており、Unityのエディタ内で新規のF#スクリプト(ソースファイル)の作成ができるようになります。

image

スクリプトの編集はVisual Studioで行えます。スクリプトに変更を加えると、自動的にUnity上でコンパイルが走り、プロジェクトがアップデートされます。

F#側から見た、Unityの使い道

F#を使ってデータ解析をしている方々にとって、Unityを使う利点は「データをインタラクティブにする」ことではないかと思います。特に、データをVRでインタラクティブにするのには、Unityはとても良いと思います。Oculus Rift(ヘッドマウントディスプレイ)を使っていろいろな視点からデータを見たり、Oculus Touch(VR内に自分の位置を表示させる入力デバイス)を使ってデータを見え方を変えられると、とても楽しいです。

image

下に示すのは、私が普段F#で解析してる、学生の得点データをUnity内で3Dで表示し、Oculus Riftで見ながらOculus Touchで操作している様子です。Touchは親指、人差し指、中指を伸ばしているか曲げているかを判定できるので、その組み合わせでグラフの移動、拡大縮小、回転などを行います。

VRGraph.gif

ただ、残念ながら現時点ではUnityにはF#のXPlotに相当するようなグラフ描画ライブラリがないので、かなりの部分を自作することになってしまいますが。UnityでData Visualizationをする人が増えてくれば、誰かがアセットを作ってくれるんじゃないかなーと勝手に期待しています。

私からは以上です。次は、zeclさんの「TypeProviderに関するちょっとした小ネタを書く予定」です!