Unity でイントロ付きループBGMの実装、および WebGLだと大抵バグるという話

表題の通り、Unityでイントロ付きループBGMを実装する方法と、その方法の大半はWebGLでバグるという話を書いていきます。

イントロ付きループBGMとは、イントロ部分とループ部分で構成されている曲であり、ループ時に最初からではなくイントロを飛ばした位置からループさせる対応が必要になります。

1週間ゲームジャム「かえす」にて、イントロ付きループBGMを使ったら予想以上にトラブルに見舞われました。
そのため、備忘録としてブログ記事を投稿する事としました。

記事内で使用しているUnityのバージョンは「Unity 2022.3.39f」になります。
また、WebGLのバグは「Unity 2022.3.50f」でも発生している事を確認済です。

今回の記事で使っているBGMは、フリーBGM素材サイト「音楽の卵」様の曲をお借りしております。
音楽の卵:https://ontama-m.com/

続きを読む

PhysicsRaycasterとRenderTexture&RawImageの罠

ビルドインやURPに問わず、unityのCameraにはRenderTextureをアタッチできる『TargetTexture』という項目があります。
この機能を使う事でゲームに複数視点の画面を表示することが出来ます。

しかし、TargetTextureとPhysicsRaycasterも一緒に使おうとすると、解像度に気をつけないと思わぬトラブルが発生します。

unityroomで公開している不正麻雀、および麻雀ポーカーの開発中も、このトラブルが発生して四苦八苦していました。

本記事では、CameraにRenderTextureをセットしてRawImage経由で画面に表示させた状態で、PhysicsRaycasterを使用した時に発生するバグ(仕様?)と、その対策を記載していきます。

続きを読む

プレイヤーへキャッシュクリアさせずにMaximum call stack size exceededを解決する【Unity】

Unity WebGLで、ゲームを更新(サーバにデータを上書き)した時に発生する事があるMaximum call stack size exceededエラー。

プログラムのミスで再起関数を大量呼び出しした時に発生する事もありますが、そうでない場合はプレイヤーにキャッシュクリアをお願いする必要がある厄介なエラーです。

この『Maximum call stack size exceeded』ですが、プレイヤーにキャッシュクリアを要求しなくても解決できる方法があるので、解説していきます。

なお、記事で使用している環境はUnity2021.2.19になります。

続きを読む