The Eye TribeのC# SDKをUnityで使用する準備

# はじめに

本稿では、[The Eye Tribe](http://theeyetribe.com/)という眼球の動きをトラッキングするセンサをUnityで使用するための、環境構築の手順を紹介します。[これ](https://github.com/EyeTribe/tet-unity-aircraft)とか[これ](https://github.com/EyeTribe/tet-unity-nightmares)とか、The Eye TribeとUnityを連携した面白いサンプルが公式で用意されています。
Unityそのものの使い方については触れません。

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

The Eye TribeのSDKを使用するUnityプロジェクトを作成します。

# 2. dllをダウンロードする

[C# SDKのGitHubリポジトリのreleases](https://github.com/EyeTribe/tet-csharp-client/releases)から、最新のTETCSharpClient.dllとNewtonsoft.Json.dllをダウンロードします。

![スクリーンショット 2016-03-10 20.40.57.png](https://qiita-image-store.s3.amazonaws.com/0/83524/a3838de4-3f44-14cb-6f16-f085562ef9a9.png)


# 3. dllをUnityプロジェクトのAssets以下に配置する

ダウンロードした2つのdllを、作成したUnityプロジェクトのAssets以下の任意のディレクトリに配置します。
私は[Unityプロジェクトのルートディレクトリ]/Assets/Pluginsに配置しています。

# 4. API Comparability Levelを .NET 2.0 に設定する

Unityにて、**File -> Build Settings -> Player Settings -> Other Settings**から、API Comparability Levelを .NET 2.0 に設定します。

![スクリーンショット 2016-03-10 20.47.33.png](https://qiita-image-store.s3.amazonaws.com/0/83524/34781e66-b7ff-e3e2-39d5-feb0f917c090.png)

おそらくここがデフォルトで .NET 2.0 Subset となっていますが、このままUnityプロジェクトをビルドしようとするとNewtonsoft.Json.dllが読み込めず、以下のようにReflectionTypeLoadExceptionという例外が投げられます。ここで私はしばらくハマりました。


> 
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
  at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
  at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 
>
The class System.ComponentModel.INotifyPropertyChanging could not be loaded, used in System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
The class System.ComponentModel.AddingNewEventHandler could not be loaded, used in System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
The class JTokenReferenceEqualityComparer could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JContainer could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JObject could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JContainer could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JContainer could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JContainer could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class JPropertyList could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JObject could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JArray could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JObject could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JObject could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class Newtonsoft.Json.Linq.JProperty could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class <Values>d__4`2 could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class <Convert>d__f`2 could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class <Descendants>d__0 could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class <GetEnumerator>d__2 could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class <GetEnumerator>d__0 could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
The class <>c__DisplayClass2 could not be loaded, used in Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed

# 5. 準備完了！

環境構築は以上です。これでC#のスクリプトを書くときにThe Eye TribeのC# SDKを使用することができます。
SDKを使用したコーディングは以下が参考になると思います。

 - http://dev.theeyetribe.com/csharp/
 - http://eyetribe.github.io/tet-csharp-client/

# 関連リンク

 - [The Eye Tribe 公式サイト](http://theeyetribe.com/)
 - [The Eye Tribe Developersサイト](http://dev.theeyetribe.com/general/)