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を使用した時に発生するバグ(仕様?)と、その対策を記載していきます。

続きを読む

UniTaskとMagicaCloth2を使ってWebGLでクロスシミュレーション

ソースコードを改造してMagicaCloth2をWebGLでも無理やり動かせるようする方法を解説していきます。

※旧MagicaClothをWebGLで動かす場合はこちら

ソースコードの改造は自己責任でお願いします。

本記事はMagicaCloth2 バージョン2.0.0の内容となります。

初版という事もあり、バージョンアップによって変更箇所が変わる可能性はかなり高いです。ご注意ください。

最新版のchrome、firefox、Microsoft Edgeで動作確認済みです。

続きを読む

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

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

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

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

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

続きを読む

Magica ClothをWebGLで動かすためのアプローチ

追記.こちらは『Magica Cloth』をWebGLで動かす方法です

『Magica Cloth 2』をWebGLで動かす場合は、こちらを確認してください

追記終わり

ソースコードを改造して、Magica Clothを無理矢理WebGL環境で動作させる方法を解説していきます。

ソースコードを改造する際は、自己責任でお願いします。

本内容はMagica Cloth v1.12.10時点での内容となります。

『chrome v108.0.5359.125』『firefox v108』『Microsoft Edge v108.0.1462.54』で動作確認済

『IE』で動作しない事を確認済、Macは未所持につき『Safari』での動作は不明

バージョンアップによって変更箇所が変わる可能性が大いにあるため、この記事では変更するスクリプトの名称、変更するコードの行数等といったバージョンに依存する部分には触れず、大まかなやり方の説明だけいたします。

続きを読む