16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

F#Advent Calendar 2016

Day 21

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

Last updated at Posted at 2016-12-20

はじめに

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

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?