原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

Koreographerで使用する楽曲をスクリプトから変更する

3連休⇒3連休、1つ飛ばして3連休

今年は暦の関係上、シルバーウィークと呼ばれるような大型連休はありませんが、その代わり3連休が二週連続で続き、さらに一週空いて3連休が控えるという、ちょっとした秋休みっぽい日程となっているわけですが、日ごろの行動を漢字で表すなら起⇒勤⇒寝の三文字しか思い浮かばないような日常を過ごしている人間としては、急に増えた余暇時間をどう過ごすがちょっと頭を痛めていたりします。

 

きっと世間一般の、行動を表す漢字に『遊』『飲』『楽』みたいな文字も思い浮かぶであろう方々は、「今週は旅行に行って、来週はBBQでもして、その次は・・・」みたいに充実した休暇を過ごしているに違いないのでしょうが、私は部屋に閉じこもってゲーム制作をしていました。

 

勿体無い精神を発揮してみたが・・・

前回の記事で「Koreographer」を使って音楽と同期するLanchPadライクなモジュールを作ったのですが、デモ用に作ったにしては時間が掛かっていて、書いたコードの量も結構なボリュームとなっていたので、このまま破棄してしまうのは非常に忍びない、なんとか活用できる方法はないだろうか、と5分ぐらい考えて、現在製作中のゲーム「Dull Things No Life」の背景素材として使用することを試してました。

 

f:id:Karvan:20180918233111p:plain

こんな感じで

 

高速道路やバイパスを走っていると道路横で掲げられているネオン看板みたいなイメージ、BGMもEDM系にする予定なのでそれに併せてピカピカ光るのもカッコイイかなぁ、と思っていました。

 

だがしかし、、、、

 

モッサリ

 

PC上で動かしている分にはスムーズに動いていたのですが、いざ実機で動作させてみるとゲーム全体の動作がモッサリ気味になってします、画面をタップしてもすぐに反応せず、ちょっと間をおいて反応するように。ん~。

 

どうやらこのモジュールを表示させることでBatchの値が140オーバーとなるようで、こうなると携帯では重過ぎるみたい。


各CUBEのマテリアルには全て同じものを使用しているのですが、音に併せる形でCUBEのマテリアルの色を各々で変えていくとSetPass Call が跳ね上がる。

CUBEは6*12で78個あるので最大+78となり、余裕で140オーバーとなります。
つまり、このままでは使えない、困った困った。

 

『Batch』『SetPass Cal』って何?と思った方は以下のリンクを参照してください。

light11.hatenadiary.com

やっと本題

と、いうわけで前置きが長いですが今週もしつこくKoreographerネタとなります。

 

Koreographerを購入すると、使い方が分かるようにサンプル用のSceneが何種類か付いてくるわけですが、そのどれもが使用できる楽曲が固定となっています。

 

どういう事かと言うと、KoreographerにはAudioCilp(楽曲)に対してイベントを定義するKoreographyというものを作成し、Koreographer専用の音楽Playerで再生する必要があるのですが、サンプル用のSceneではこの音楽Playerで再生するKoreographyが最初から指定されていて、Scriptで動的に変更する術がどこにも示されていません。

 

f:id:Karvan:20180918233509p:plain

 

つまり、同じSceneでも場面によって楽曲を変えたい場合にどうするのか?と言った方法がサンプルSceneだけでは分かりません。
なので今回は私が見つけた方法を紹介したいと思います。

 

やり方は単純

まずはUnity側の操作

  • HierarchyウィンドウからKoreographerがアドオンしているAudioSourceをドラッグしてScriptで取得する

f:id:Karvan:20180918233706p:plain

  • 音楽PlayerのAutoPlayOnAwakeのチェックをオフにする

f:id:Karvan:20180918233819p:plain

 

次にスクリプトでの処理

  • KoreographerのLoadKoreographyに使用するKoreographerTrackを設定する
  • AudioSourceに使用する楽曲を設定する
  • AudioSourceのPlayをコール

 

ソースコードはこんな感じ

public class KoreographerTestEvent : MonoBehaviour {
    public AudioSource audioCom;
    public AudioClip[] audioClip;
    public Koreography[] playingKoreo;
    
    public void Play_Music()
    {
        // LoadKoreographyに使用するKoreographerTrackを設定する
        Koreographer.Instance.LoadKoreography(playingKoreo[0]);
        
        // AudioSourceに使用する楽曲を設定する
        audioCom.clip = audioClip[0];
        
        // AudioSourceの再生
        audioCom.Play();
    }
}

AudioSourceのPlayをコールすると自動的にKoreographer専用の音楽Player側に対象のAudioClipが設定され、KoreographerTrackに設定しているイベントが発行されるようになります。

 

今回は私が試行錯誤しながら見つけた方法なので、他にもこんな方法があるよ、とか、もっと効率的な方法があるよ。と言う方は教えて頂けると幸いです(是非!)

 

 

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。