Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

こんにちは、やのせん(@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に関するちょっとした小ネタを書く予定」です!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした