[Unity] ADX2のインゲームプレビューを使おう

#  <i class="fa fa-volume-up" style="font-size:1em;"></i> ADX2のインゲームプレビューを使おう
インゲームプレビューって**超便利な機能**、のはずなんだけど、あまり使われているのを聞いた事がないのです。

Q:なんで！？
- そもそも知らない
- ややこしい

<i class="fa fa-comment-o" style="font-size:1em;"></i> **モッタイナイ！！！**

というわけで、公式のUnity向けSDKに同梱されているインゲームプレビュー用ピンボールデモを参考に、メリットや躓きやすいポイントをまとめました。
(ピンボールデモはPC向けですが、スマホや他のコンシューマーゲーム機と同様にプレビューが可能です。)
    

----
#### の、前に必要な知識

<i class="fa fa-check-square-o" style="font-size:1em;"></i> ADX2についてはこちら → [<i class="fa fa-external-link" style="font-size:1em;"></i> 勝手にADX2情報まとめ](http://qiita.com/ksilogic/items/eb12af856b1ffc88a276)
<i class="fa fa-check-square-o" style="font-size:1em;"></i> Unityへの導入の仕方はこちら → [<i class="fa fa-external-link" style="font-size:1em;"></i> Unity 5のサウンド機能をADX2 LEで強化する
](http://qiita.com/Takaaki_Ichijo/items/aa58faa062c67afb1a84)

----

## <i class="fa fa-clock-o" style="font-size:1em;"></i> 使うメリット ＝ 時間の短縮

##### 音量調整したものを実機（スマホ）で確認したいとき
- 従来のやり方
> 新しく調整されたデータを受け取り、組み込み、ビルドして、端末にインストールしてようやく確認準備ができる

- インゲームプレビューを使う場合
> 端末で鳴っている音を直接いじって鳴り方を変化させつつ、何度でも確認し、調整する事ができる

**前者のタイムロスがどの程度あるか想像してみましょう。**

> 担当者がメールに気付くまで (数分〜半日)
ファイルをダウンロードする手間 (数分)
差し替える手間 (数分)
ビルドに掛かる時間 (プロジェクト次第)
アプリをインストールする手間 (数分)

調整した音を一度確認するためだけに、これだけの工程が必要です。
隣りの席で作業していれば15分くらいで可能かもしれませんが、それでも毎回15分かかります。
サウンドが外注で、開発も終盤になり忙しくなってしまうと、一度のやり取りだけで丸一日待たされる…なんて事もあります。
**試行錯誤の回数**が最終的なクオリティに大きく影響するため、**音の素材作りよりも大事**なところです。

    > 丸一日どころじゃない事もあるから言ってます。(筆者はサウンド側)
    音量バランスというのは料理の盛り付けみたいなもので、皿からこぼれた状態で提供したくありません。
    「床にこぼれてても美味しいけりゃ良いじゃん」みたいな事を言う人も居るので困ります。
    調整が大事な事は本当に、広くご理解いただきたい。

わかりやすく音量調整と書きましたが、音量だけではありません。
大量に鳴る場合の発音数の制限や、大事な音が正しく鳴っているか確認するというデバッグ的な要素も多くあります。

----

## <i class="fa fa-cube" style="font-size:1em;"></i> 使い方

- スマホ(プレビューターゲット)とPCを同じネットワーク上に置く
- 試しにping通してみる
- プレビュー機能をオンにしたアプリを起動する
- AtomCraft上でF10を押してインゲームプレビューを開始する

 <i class="fa fa-book" style="font-size:1em;"></i> 詳細はマニュアル参照
この記事はマニュアルにない躓きポイントを書くためにあるんだ

----

## <i class="fa fa-cubes" style="font-size:1em;"></i> 引っかかりやすいポイント

### <i class="fa fa-cube" style="font-size:1em;"></i> デモプロジェクトが古い

[公式web](http://www.adx2le.com/download/index.html)から拾えるUnity pluginに入っているデモ（ピンボールゲーム）がUnity4系かつ、同梱されているツールより古いAtomCraftで作られていて、現行のUnity5やAtomCraft2.13(LE)で開くには初回はコンバートが必要…

なので、勝手に最新版で動くようにしたものを [<i class="fa fa-dropbox" style="font-size:1em;"></i> DropBoxに上げました](https://dl.dropboxusercontent.com/u/14106691/ADX2_Pinball_forInGamePreview_20151124.zip)。
ピンボールのUnityプロジェクトと、対応したAtomCraftプロジェクトが入っています。
(公式が対応したら消してリンク貼り直します。)
> Unity5.2.2f , AtomCraftLE 2.13 で保存し直してあります。Unity版はコンバート時の結果(？)か、そのままでは正常動作しなかった(ボールが出ない事があったりする)のを修正してあります。たまに挙動がおかしい事があるかもしれません。

### <i class="fa fa-cube" style="font-size:1em;"></i> プレビューターゲットが正しいかどうか
ターゲットをiPhoneとかにしたくなりますが、普段のビルドターゲットやプレビューターゲットをPCにしているのであれば、同様にPCを指定します。
LEの場合はpublicになっていると思います。

### <i class="fa fa-cube" style="font-size:1em;"></i> そもそも同じネットワーク上にあるかどうか
コマンドプロンプトでpingを打つなどして、端末から応答があるか確認します。
PC側のファイアーウォール設定などでポートが空いていない場合は適宜、設定をします。
同じPC内で扱う場合は127.0.0.1を指定します。

### <i class="fa fa-cube" style="font-size:1em;"></i> アプリ側のUses In Game Preview(画像右下)にチェックは入っているか
![スクリーンショット 2015-11-24 18.00.49.png](https://qiita-image-store.s3.amazonaws.com/0/96688/1b4657a9-c879-5033-b723-7751d2d28ac5.png)

CriWareLibraryInitializerのコンポーネント CriWareInitializer、Initialize Atom内の Uses In Game Previewにチェックが入っているか。
Unity以外の場合はマニュアルをご参照ください。

### <i class="fa fa-cube" style="font-size:1em;"></i> ランタイムとツールのバージョンが合っているかどうか
バージョンが違うとデータ形式が変わっていて正しく読めない場合があります。
同じSDKに含まれているランタイムとツールを使ってください。

**ランタイムのバージョンを上げる際は注意してください**
(ランタイム側がバージョンアップした事を告げられないまま「鳴らなくなったんだけど」って言われた事もあるとかないとか)

### <i class="fa fa-cube" style="font-size:1em;"></i> インゲームプレビューが成功しているのにBGMが鳴らない
データの転送時に一旦、すべての音が消えます。マニュアルにも記載がありますが、BGMが鳴っているかどうかを検知して再生し直すような仕組みを追加してください。

```csharp:SoundManager.cs

public void ResumeBGM()
{
  /* 再生終了か停止状態の時に再生します（ACB更新時などに自動復帰させる） */
  CriAtomSource.Status status = atomSourceBgm.status;
  if ((status == CriAtomSource.Status.Stop) || (status == CriAtomSource.Status.PlayEnd)) {
    /* 再生 */
    PlayBGM();
  }
}

```

以上です。

他にも何かあれば追記しますので、コメントや[twitter](https://twitter.com/ADX_kawaguchi)にご連絡いただけると助かります。
どうぞよろしくお願いいたします。