追記有:cluster v2.53にしたらBGMが聞こえない?(Post Processingも利かない?)という時の対処法

最初に簡単に説明します。解決法はこれです。

まずはきっかけ

先日「カミトコのBGMが聞こえないですよ!」という報告がありました。何のことかわからないままに逢魔が時の紅いPost Processingも利いていない等、続々と連絡が来ました。

初動時ですが、調査のために久々にclusterにログインしましたが全く異常はありませんでした。しかし止まらない報告、そしてその中に「アプリをアップデートしたらBGMが聞こえなくなった」という報告があり、試しに自分の端末のアプリを更新してログインすると・・・

・・・確かにBGMもPost Processingも無効になってました

発生条件

ただし、clusterの全てのワールドのBGMやPost Processingが利かないとすれば大混乱のはず。どういうことかと発生条件を調べていくと

条件1:cluster v2.53で
条件2:UIの下に組み込まれているBGMまたはPost Processingが
条件3:animationで切り替わる設定になっているもの

以上が発生条件のように思えました。
animationで切り替わるといえば有名なのはWATBOXさんの時刻連動ギミックですが、今回、こちらを使用してる方でBGMなどをUIの下で管理してる方の間で同様のバグが起きました。

一応はcluster社へ連絡を入れましたが、発生条件がマイナー過ぎて先方も困るのではないかという思いと、またギミック製作者さんのお手を煩わせてもなと思い、しばらく静観しようと思いました。が。まぁ発生条件が絞れているならロジックで回避できないだろうか??と思ったらうまくいったので此処に補完ロジックを公開します。

まぁ先日、9191のノウハウのすべてを公開しましたが、これも真新しい手法ではありません。応用技です。

対処法「UI(ローカル)の下で切り替わらないなら外から切り替え信号を送ればいいじゃない」

もちろん理由があってUIの下でBGMやPost Processingをコントロールしてるので、これは外せませんよね?なので当たり前ですが以前と同じように処理できるようにすることが前提です

そのうえで、UIの下のBGMやPost ProcessingでもTriggerやBoolなどでONされたものは作動するという点が重要です。つまり、何らかの方法で時間に連動してUIの下にあるBGMやPost ProcessingをONにするTriggerやBoolを送れるようになれば良いということです。

次のポイントはanimationもUIの下以外のところでは正常に作用しているらしいという点です。ということは、そこにUIの下にあるBGMやPost ProcessingをONにするTriggerやBoolを送れるようになれば良いというわけです。実にシンプル。

解決法は色々とあるのですが今回はちょっと9191好みの解決法なのでご了承ください。

まず最初に「お守り」を作ります。名前は何でも良いです暇なら「9191神社御守り」とでも名付けてください。そしてそれに「ITEM」をつけてアイテム化します。場所もどこでも良いです。

次に、切り替わる時間に合わせてアニメーションのisActiveで表示・非表示されるgameobjectを作ります。本来ならそれをOn Create Item Triggerを付けたアイテムを、・・・といきたいのですが、タイムラインを導入してAwakeでスタートするようにします。次にInteract Item Triggerを付けます。つけますが絶対にコライダーはつけないでください。中身は後で決めるとして、さらにSignalemitterをつけてください(0.5~1秒後が推奨)そして対象はこのオブジェクト自身にして後はInteract Item Triggerを強制発火(invoke)させるようにしてください。

(まぁこんなことしなくてもOn Create Item Triggerでいいと思います、あくまで「自分はこうやった」なので適当なことを書けないだけなので。)

で、Interact Item Triggerの中身は最初に作った「御守り」に何らかのBoolをオンさせてください。それをUI下の再生したいBGMにSet Game Object Active Gimmickをつけて、対象を「御守り」にしてBoolを対応させてください。同時に切り替えで消したいBGMに対応するSet Game Object Active Gimmickもやっておくと良いです。

上記の設定を組むことで、

時間が来る
⇒切り替わる時間に合わせてアニメーションのisActiveで表示・非表示されるgameobjectが表示される
⇒Awakeでタイムラインが発動
⇒SignalemitterでInteract Item TriggerをInvoke
⇒「御守り」がBoolON(またはOFF)される
⇒UIの下のBGMなどが連動する

という流れで無事今まで通りになります。

ちょっと説明雑ですが、そもそもanimationでUIの下のBGMやPost Processingをコントロールしようとする人なら概要さえ伝えれば解決できそうな話なのでよいんじゃないかな?とおもいます。


そんじゃーね


追記:あれ?サーバーを変えたらまたBGMが止まった???

・・・という事態が発生しました、何なんでしょう?仕方ないので追加の力技を施します。切り替わる時間に合わせてアニメーションのisActiveで表示・非表示されるgameobjectにPlay Timeline Gimmickを追加します。そして「御守り」にOn Join Player Trigger付けます。

On Join Player Triggerの対象は御守りにして何かTriggerを送るようにします。そして各それぞれの切り替わる時間に合わせてアニメーションのisActiveで表示・非表示されるgameobjectのPlay Timeline Gimmickはその御守りへのTriggerで発動するようにしてみてください。これはすべての切り替わる時間に合わせてアニメーションのisActiveで表示・非表示されるgameobjectで大丈夫です。時間によって非表示になっていればそのobjectのPlay Timeline Gimmickは作動しないので、その時に表示されているobjectだけ発動する仕組みです。


この記事が気に入ったらサポートをしてみませんか?