30
15

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 3 years have passed since last update.

グレンジAdvent Calendar 2018

Day 4

【Unity:CRI】UnityでCRIを使う覚悟はいいか?オレはできてる

Last updated at Posted at 2018-12-03

グレンジ Advent Calendar 2018 4日目の記事担当kenjiです
クライアントエンジニアやってます

UnityでCRI使ってみたいけど導入面倒なんでしょ?
って人がさくっとCRIを使用して音を鳴らすまでを書きます

「なぜCRIを使うのか…」
「こういう時の設定はどうするのか…」
そんなことはいいからとりあえずCRI試したい
という覚悟がある人向けです

今回は無料版のADX2 LEを使用しますが、有償版も基本は同じです

内容は大きく分けて
・CriAtomCraftでデータ作成
・CRI ADX2 LEで音を鳴らす

※実装内容は「Unity 2018.2.x」時点の話です
※CRIは「cri_adx2le_sdk_v20601」を使用してます

ダウンロード

CRI ADX2 LEのダウンロードはこちらから
https://www.adx2le.com/download/index.html

CriAtomCraftでデータ作成

1. 起動

cri_adx2le_sdk_v○○/cri/tools/criatomex/CriAtomCraft.exe
ここにある実行ファイルを開く

2. 新規作成

cir_atom_craft_new.png cir_atom_craft_new_name.png
プロジェクト名は後で書き出すファイル名になるので適当に付けると後悔する

3. データ追加

cir_atom_craft_work_unit.png cir_atom_craft_work_unit_new.png
音声ファイルをドラッグしてデータ追加します
CRIはキューシートというファイルごとにデータを読み込むことになるので
BGMなど大きめなデータは1キューシート1データ
SEのような小さいデータは1キューシートに複数まとめます

4. ビルド

cir_atom_craft_build.png
cir_atom_craft_build_setting.png
ビルドするキューシートにチェック入れてビルド!
「Unity情報出力」にチェック入れるとUnity用のフォルダ階層で書き出してくれます
「C#ヘッダー出力」にチェック入れると定数や列挙体が記述されたcsファイルを書き出してくれます

5. データの場所

ここに書き出されます
(プロジェクト名)/Public/...
(プロジェクト名)/Public/(キューシートフォルダ名)/...

「Unity情報出力」にチェック入れると下記にも書き出されます
(プロジェクト名)/Public/Assets/StreamingAssets/...

最低限必要なのは
プロジェクト設定の.acfファイル
各キューシートの.acbファイル

CRI ADX2LEで音を鳴らす

1. Unityパッケージインポート

cri_adx2le_sdk_v○○/cri/unity/plugin/criware_unity_plugin.unitypackage
Unityプロジェクトにこれをインポート

2. CRIファイル取り込み

先ほど書き出した.acfと.acbファイルを
Assets/StreamingAssets配下に

「Unity情報出力」にチェック入れてた場合は
(プロジェクト名)/Public/Assets/StreamingAssets/...
をごっそり持ってくればOK

3. CRIプレハブ生成

cir_adx2_init.png
Unity上部のメニュー「GameObject」に「CRIWARE」が追加されてるのでInitializerとErrorHandlerを作成
これでUnity起動するとCRIの初期化まで行われます

4. acfファイル読み込み

適当に新規GameObject作成して下記csファイルを貼り付けます

CriSample.cs
using UnityEngine;

public class CriSample : MonoBehaviour
{
	private void Start()
	{
		// acf設定
		string path = CriWare.streamingAssetsPath + "/sample.acf";
		CriAtomEx.RegisterAcf(null, path);
	}
}

これでプロジェクト設定のファイルが読み込めました

5. acbファイル読み込み

CriSample.cs
using UnityEngine;

public class CriSample : MonoBehaviour
{
	private void Start()
	{
		// acf設定
		...

		// CriAtom作成
		new GameObject().AddComponent<CriAtom>();

		// BGM acb追加
		CriAtom.AddCueSheet("sample_bgm", "sample_bgm.acb", null, null);
		// SE acb追加
		CriAtom.AddCueSheet("sample_se", "sample_se.acb", null, null);
	}
}

acbファイルを管理するためのCriAtomを生成します
あとは使用したいacbファイルの追加処理を書くだけ

6. 音を鳴らす

CriSample.cs
using UnityEngine;

public class CriSample : MonoBehaviour
{
	private void Start()
	{
		// SE acb追加
		...

		// BGMを鳴らす
		CriAtomSource bgm = new GameObject().AddComponent<CriAtomSource>();
		bgm.loop = true;
		bgm.cueSheet = "sample_bgm";
		bgm.Play(0);

		// SEを鳴らす
		CriAtomSource se = new GameObject().AddComponent<CriAtomSource>();
		se.loop = false;
		se.cueSheet = "sample_se";
		se.Play(0);
	}
}

BGMとSEを鳴らすオブジェクトを作成
BGMはループあり、SEはループなしに設定
Playの引数にはCriAtomCraftで設定してあるキューIDを渡します
これで鳴ります!

cir_atom_craft_work_unit.png cir_atom_craft_cueid.png
キューIDは特に設定しなかった場合は各キューシートごとに追加した順に0から割り当てられます
またCriAtomCraftで「C#ヘッダー出力」にチェック入れた場合に書き出されたcsファイルにも記述されてます

まとめ

最速でCRIで音を鳴らしました(たぶん)

逆にできることが沢山あるので色々設定しようとすると地味に時間かかります
情報は結構まとまってるので下記を参考にするとやりたいことや不明点がわかるかと思います
https://www53.atwiki.jp/soundtasukeai/pages/22.html

これを機会にCRIを使用してみましょう!

「いいね押そう」…そんな言葉は使う必要がねーんだ
「いいね押した」なら使ってもいいッ!

30
15
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
30
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?