[ゲームへの組み込み]編
CRI Atom Craftで作成したサウンドデータをゲームに組み込み、再生する手順について説明します。

Unityプロジェクトを新規作成し、CRI ADX2でサウンド再生を行うオブジェクトをシーンに配置します。
作業全体の流れは、次のようになります。

(1) Unityプロジェクトの作成

(1-1) Unityプロジェクトを作成する
Unityを起動し、まず空のプロジェクトを作成してください。
このチュートリアルでは、「TutorialAtom」フォルダをプロジェクトフォルダとします。
(1-2) シーンを保存する
プロジェクトを新規作成すると、「Main Camera」だけから構成されるシーンが現れます。
いったん、ここでシーンを保存することにします。
このチュートリアルではシーン名を「NewScene」とします。

[備考]
ここでは、「Main Camera」の座標が(0, 1, -10)となっています。

(2) プラグインパッケージのインポート

ここで、「CRIWARE Unity Plug-inパッケージ」をプロジェクトにインポートします。
プラグインパッケージファイルはSDKの以下の場所にあります。

  * cri

  \ * unity

    \ * plugin

      \ * criware_unity_plugin_smartphone.unitypackage

 

 

 

 

 

(3) キューシートバイナリのコピー

(3-1) 再生に必要なファイル
Unity上でサウンド再生を行うには、CRI Atom Craftが出力した以下のファイルが必要になります。
  • 「キューシートバイナリ」
    • ACBファイル(*.acb): キューシート単位のキュー情報、再生パラメータ、メモリ再生用波形データ
    • AWBファイル(*.awb): キューシート単位のストリーム再生用波形データ
    • ACFファイル(*.acf): 環境設定やキューシート共通情報。1プロジェクトで1つ


      旧バージョンでは「Unity情報ファイル」(CRI Atom Windowでのキューリスト表示用データ)がでしたが、新バージョンでは「Unity情報ファイル」が無くても動作するようになりました。
      旧バージョン用にキューシートバイナリをビルドするときに「Unity情報ファイル」(Assets/Plugin/CriWare/CriAtom/CriAtomProjInfo_Unity.cs)が作成されている場合がありますが削除して問題ありません。

本チュートリアルでは「 [データ作成]編 」で用意したデータを使用します。
本チュートリアルのプロジェクト保存フォルダ「Tutorial」は次のフォルダ構成を持ちます。

CRI Atom Craftのプロジェクトフォルダ「Tutorial」の構成
  * CriAtomCraft

  \ * Tutorial

    o * Material

    |  

    o * public

    | \ * Assets

    |   o * Plugins

    |   | \ * CriWare

    |   |   \ * CriAtomProjInfo

    |   |     \ * CriAtomProjInfo_Unity.cs

    |   |  

    |   \ * StreamingAssets

    |     o * TutorialProject.acf

    |     \ * TutorialCueSheet.acb

    |  

    \ * TutorialProject.atmcproj

 

: プロジェクトルートパス

: マテリアルルートパス

 

 

: ※「再生に必要なファイルの出力先」

 

 

 

: Unity情報ファイル(旧バージョンでは必須でしたが、新バージョンでは不要)

 

 

: ACFファイル

: ACBファイル

 

: CRI Atom Craftプロジェクトファイル

 

(3-2) ファイルをコピーする
CRI Atom Craftのプロジェクトフォルダ「Tutorial」下の「public/Assets」フォルダを指定し、UnityプロジェクトのAssetsフォルダへそのままコピーしてください。
直接ファイルをコピーしてもかまいませんが、CRI Atomウィンドウ のデータコピー機能を使うと簡単に実行できます。
[手順1]
メニューバーの[Window]->[CRIWARE]->[Open CRI Atom Window]コマンドをクリックしてください。
「CRI Atomウィンドウ」が出現します。
まだADX2のデータをUnityプロジェクトに入れていないため、 CRI Atomウィンドウ の上部には「Do update display.」というメッセージが表示されています。

adx2u_atomwnd_first.png
「CRI Atomウィンドウ」

[手順2]
CRI Atomウィンドウの[Use Copy Assets Folder (Created in CRI Atom Craft)]チェックボックスをチェックします。
[Select Assets Root]ボタンを押すとファイルセレクタが起動します。
ここで、CRI Atom Craft で出力したファイルの入っているAssets フォルダを指定してください。
通常は CRI Atom Craft のプロジェクトファイルがある場所の Public/Assets です。
インゲームプレビュー用データは同じくCRI Atom Craft のプロジェクトファイルがある場所の Public/inGamePreview/Assets です。
このどちらかのフォルダを指定してください。
Assets以外のフォルダを指定した場合はコンソールに次のようなエラーが出ます。

adx2u_atomwnd_assetroot_error.png
「CRI Atom Craft の出力フォルダ指定エラー」

[手順3]
正しいフォルダを指定できると、コンソールにログが出力されます。

adx2u_atomwnd_assetroot_ok.png
「CRI Atom Craft の出力フォルダ指定成功」

adx2u_atomwnd_assetroot_set.png
「CRI Atom Craft ウインドウ(出力フォルダ指定後)」

フォルダを指定したら、CRI Atomウィンドウ 下部の [Update Assets of "CRI Atom Craft"] ボタンをクリックしてください。
[手順4]
[Update Assets of "CRI Atom Craft"] ボタンを押したあと、Unityエディタ に結果を反映させるために 「一度、Unityエディタ以外のアプリやデスクトップを選択して Unityエディタからウィンドウのフォーカスを外し」てください。
もう一度 Unityエディタ にフォーカスを戻すと表示が更新されます。
Unityエディタ の Assets の中に StreamingAssets というフォルダが追加されていれば成功です。
Unityプロジェクト「TutorialAtom」のAssetsフォルダの構成
  * TutorialAtom

  \ * Assets

    o * Editor

    |  

    o * Gizmos

    |  

    o * Plugins

    | o * cri_ware_unity.bundle

    | \ * CriWare

    |   o * CriAtom

    |   \ * CriAtomProjInfo

    |     \ * CriAtomProjInfo_Unity.cs

    |  

    \ * StreamingAssets

      o * TutorialProject.acf

      \ * TutorialCueSheet.acb

 

: Assetsフォルダ

 

 

 

 

: CRIWARE Unity Plug-in

 

: CRIWARE Unity Plug-inソース

 

 

: Unity情報ファイル(旧バージョンでは必須でしたが、新バージョンでは不要)

 

: StreamingAssetsフォルダ

: ACFファイル

: ACBファイル

 

データコピーが完了すると、Unityの「Projectビュー」が更新され、次のような状態となります。

adx2u_qstart_game_datafiles_le_mini.png
データコピーが完了した状態

(4) CRIWARE Library Initializer の作成

音を貼り付ける前に、CRIWARE全体の初期化モジュールとエラー処理モジュールを追加しましょう。
初期化モジュールで最大同時再生数などのリソース管理を行うため、必ず追加してください。
Unity メニューバーの[GameObject]->[CRIWARE]メニューから[Create CRIWARE Library Initializer] と[Create CRIWARE Error Handler]をそれぞれ実行してください。
Unity の Hierarchy ウインドウに CriWareInitializerCriWareErrorHandler が追加されていれば成功です。
ここではそれぞれのオプションを変更する必要はありません。

adx2u_qstart_game_initializer_hierarchy.png
CRIWARE Library Initializer 作成後

(5) CRI Atomウィンドウによるキューの確認

コピーしたキューシートバイナリの内容を「CRI Atomウィンドウ」でチェックしてみましょう。
(5-1) 「CRI Atomウィンドウ」を表示する
ADX2データをUnityプロジェクトのフォルダにコピーが終わった後に、 以下の手順でキューリストの情報を取得します。
  1. CriWareLibraryInitializerのあるUnityのシーンを再生。
  2. CRI Atom Windowの「Reload Info」ボタンを押す。
    「Do update display.」と出ていたメッセージが消えて、キューの一覧が表示されます。


adx2u_atomwnd_cue_list.png
「CRI Atomウィンドウ」


このままでは操作しにくいので、いったん、「Projectビュー」にドッキングさせてください。

adx2u_qstart_game_gameobj0_le_mini.png
「Projectビュー」にドッキング
(5-2) キューシート情報を確認する
「CRI Atomウィンドウ」は、Unity上でCRI ADX2のコンポーネント作成などを補助するためのコントロールパネルです。
このウィンドウからキューシートの選択やキューの一覧、CRI Atom Sourceの作成などを行うことができます。
「CRI Atomウィンドウ」の[Cue Sheet]にはキューシート情報が表示されています。
表示されていない場合は以下の手順でキューリストの情報を取得します。
  • 1. CriWareLibraryInitializerのあるシーンを再生。
  • 2. Reload Infoボタンを押す。

    キューシートの名前や、キューシートに含まれるキュー一覧がわかります。
    キュー一覧でキューを選択すると、下部の[Selected Cue]の情報が更新されます。

(6) CRI Atom Sourceの作成

Unity上でサウンド再生を行うには、まず、「CRI Atom Source」を作成する必要があります。
単にサウンドを再生するだけであれば、これだけで十分です。
CRI Atom Sourceの作成方法には、次の二つの方式があります。
種々のケースにあわせて、CRI Atom Sourceの作成方法を選ぶことができます。
  • 単体の「ゲームオブジェクト」(Game Object)として作成する。
  • 「コンポーネント」(Component)として他のゲームオブジェクトに貼り付ける。
以下、この二つの方法それぞれを使って、CRI Atom Sourceを作成します。

(6-1) 単体のゲームオブジェクトとして作成する。
まず、heli_loop(ヘリコプターのループ音)を再生するCRI Atom Sourceを作成してみます。
  1. 「Hierarchyビュー」でオブジェクトを選択しないようにしておきます。
  2. 「CRI Atomウィンドウ」の[Cue Sheet]欄にあるキュー一覧で「heli_loop」を選びます。
  3. 「CRI Atomウィンドウ」の[Selected Cue]欄の下部にある[Create GameObject]ボタンをクリックします。
これで、シーン上にCRI Atom Sourceが作成されました。

「Hierarchyビュー」には、作成したばかりの「heli_Loop(CriAtomSource)」が現れています.
クリックすると「Inspector」にCRI Atom Sourceの詳細情報が表示されます。
ここで、CRI Atom Sourceの[Play On Start]をチェックしておきます。

adx2u_qstart_game_gameobj_le_mini.png
ゲームオブジェクトとしてCRI Atom Sourceを作成

[Play On Start]をチェックしたので、ゲームをスタートさせるとすぐに heli_Loopが再生されるようになります。
Unityのプレイボタンをクリックして実際に確かめてみてください。
[備考]CRI Atomオブジェクトについて
CRI Atom Sourceを作成すると、「CRIWARE」という名前を持つ「CRI Atom」オブジェクトが自動的に作成されます。
CRI Atomはサウンド再生全体を制御するためのオブジェクトです。

(6-2) コンポーネントとして他のゲームオブジェクトに貼り付ける。
他のゲームオブジェクトにCRI Atom Sourceをコンポーネントとして貼り付けてみます。
  1. メニューより [GameObject]->[Create Other]->[Cube]を選び、Cubeを作成してください。
  2. 作成したCubeの座標が(0, 0, 0)であることを確認してください。
  3. 「Hierarchyビュー」でCubeを選択しておきます。
  4. 「CRI Atomウィンドウ」の[Cue Sheet]欄にあるキュー一覧で「gun1_High」(銃声)を選びます。
  5. 「CRI Atomウィンドウ」の[Selected Cue]欄の下部にある[Add Component]ボタンをクリックします。

これで、CubeにCRI Atom Sourceコンポーネントが貼り付けられました。

次に、作成したCubeをクリックし、「Hierarchyビュー」でCRI Atom Sourceの[Play On Start]をチェックしておきます。

adx2u_qstart_game_gameobj2_le_mini.png
コンポーネントとしてCRI Atom Sourceを作成
Cubeに貼り付けたCRI Atom Sourceコンポーネントの [Play On Start]もチェックしているので、 ゲームをスタートさせるとすぐに、gun1_High と heli_Loop が再生されます。

(7) スクリプトによるサウンド再生制御

ここまでは単純なサウンド再生を行うだけでしたが、スクリプトを追加して、ゲームとのインタラクションを加えましょう。
ここでは、マウスクリックするとサウンド再生を行うスクリプトをCubeに貼り付けることにします。
(7-1) サウンド再生を制御するスクリプトをCubeに追加する。
以下の手順で、Cubeにスクリプトを貼り付けてください。
  1. Cubeを選択し、「Inspector」で[Cri Atom Source]の[Play On Start]のチェックを外してください。
    (ゲーム開始時の自動再生を止める)
  2. 「Hierarchyビュー」でCubeを選択しておきます。
  3. 「Projectビュー」で右クリックし「C# Script」作成してください。
    ファイル名を「CuePlay」に変更してください。
  4. CuePlay.csを「Hierarchyビュー」上のCubeへドラッグアンドドロップし、Cubeに貼り付けてください。

    adx2u_qstart_game_gameobj2_cueplay_le_mini.png
    Cubeにスクリプトを貼り付ける

MonoDevelopを起動し、CuePlay.csを次のように編集してください。

public class CuePlay : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    void OnMouseDown() {
        CriAtomSource audio = (CriAtomSource)GetComponent("CriAtomSource");
        audio.Play();   
    }
}

OnMouseDown関数
このスクリプトでは、OnMouseDown関数でマウスボタンをクリックした時の処理を記述しています。
まず、オブジェクトに割り当てられた CRI Atom Sourceコンポーネントを取得します。
次に、CRI Atom Source に設定されたキューを再生します。

(7-2) ゲームを実行する
Unityのプレイボタンをクリックしてゲームを実行してください。
ゲームが始まると同時に heli_Loop(ヘリコプターのループ音)が再生されます。
シーン中央のCubeをクリックすると、gun1_High(銃声)が再生されます。

adx2u_qstart_game_gameobj3_run_le_mini.png
ゲーム実行中



CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Unity) SDKVer.2.10版