##本作業について
実際に外部アセットとしてUnity上で読み込み、とりあえず実行できるところまで進めていこうと思います。
######クラッシュについて
「AirSim on Unity」には致命的な仕様があります。
それは、CarDemo,DroneDemo(車・ドローン用のシーン)を直接実行しようとすると、Unityがクラッシュしてしまうというものです。
「AirSim on Unity」では、SimModeSelecter(モードセレクト用のシーン)内で必要な情報を処理してから、各シーンに遷移してシミュレータを実行する仕様であるため、このようなクラッシュが発生します。
そのため、実行時は必ず"SimModeSelecter"シーンから実行してください。
尤も、「AirSim on Unity」では、設定を試行錯誤する際にUnityのクラッシュに遭遇することが多々あります。クラッシュが発生しても、プロジェクトやPCが壊れることはないので、落ち着いてUnityを再起動しましょう。
また、保存はこまめに行ってください。クラッシュ前に保存していない「シーンでの作業」や「プロジェクト設定」は、クラッシュ時に消えてしまいます。
##具体的な作業
◆手順
①AirSimのインポート
②「x64」ファイルの削除
③シーン設定
④.NETの変更
⑤実行してみる
##①AirSimのインポート
まずはUnityのプロジェクトを新規作成してください。
プロジェクト名は任意ですが、必ずバージョン"2018.2.21f1"で作成してください。
新規作成が終わったら、AirSimフォルダ内の「Unity」フォルダをUnityにドラック&ドロップしてください。
あとはインポート作業を勝手にUnityが行ってくれます。
インポート後に外部アセットを使っている旨を警告として12個ほど受けますが、無視して進めても問題ありません。エラーはこれから1つずつ直します。
また、これ以降の作業は全てUnity内で行ってください。
##②「x64」ファイルの削除
Unityフォルダ内には32ビット版と64ビット版の両方の.dllファイルが混在しているため、このままでは実行できません。
そのため、64ビット版をファイルごと削除してしまいましょう。
64ビット版ファイルは「x64」というファイルに入れられており、以下の2か所に存在します。
・Assets→Unity→AirLibWrapper→
・Assets→Unity→AirLibWrapper→AirSimWrapper→
これらに存在する、計2つの「x64」フォルダを削除してください。
##③シーン設定
AirSimが定めた位置に各シーンを置かない場合、後述の実行時にシーンが正常に遷移しません。
Unityフォルダ内に存在する「Scenes」に入っている3つのシーン(CarDemo,DroneDemo,SimModeSelecter)を、デフォルトで作成されている「Scenes」フォルダに移動してください。
元の場所:Assets→Unity→UnityDemo→Assets→Scenes
移動先:Assets→Scenes
また、シーンを遷移させるために、ビルド設定からシーンを追加する必要があります。
メニューバーの「ファイル」から「ビルド設定…」を開き、"DroneDemo"シーンを開いた状態で「シーンの追加」を押してください。「ビルドに含まれるシーン」に追加されればOKです。
同様の作業を"CarDemo"シーンでも行ってください。
上記の作業が終わったら、忘れないうちに"SimModeSelecter"シーンを開いた状態にしておきましょう。(クラッシュ防止のため)
##④.NETの変更
この作業はおまじないだと思ってやってください。
この作業を行わない場合、「時刻に関する機能のエラーが出て実行できない」「モード選択後にクラッシュする」といった問題が発生します。
メニューバーの「編集」から「プロジェクト設定>プレイヤー」を開き、画面の右にインスペクターを表示します。
インスペクター内の設定にある「スクリプティングランタイムバージョン」から「.NET 4.x 相当」を設定してください。
##⑤実行してみる
ここまでの作業が全て終わったら、"SimModeSelecter"シーンを実行して、[Drone Mode]をクリックしてください。
ドローンのプロペラが回転し、ドローン本体がゆっくり自由落下を始めれば成功です。