【Unity】 WebGL版の落とし穴
先日Tactics.YokoのWebGL版を公開したわけですが。その時ひっかかった点。
ThreadNinjaは動かない
マルチスレッド処理を行うのにThreadNinjaというアセットを使ってるんですが、これが例外を吐く。
なので↓のようにマルチスレッド処理をあきらめる。
public Coroutine StartCoroutineAsync(IEnumerator routine) { #if UNITY_WEBGL return StartCoroutine(routine); #else return CielaSpike.ThreadNinjaMonoBehaviourExtensions.StartCoroutineAsync(this, routine); #endif }
マルチスレッド処理はステージオブジェクトの構築やAIの思考とかに使っているので、そういう箇所で画面が固まるんだけど、どうしたもんかな。他のアセットだとうまくいくんだろうか。
普通のコルーチンで同じような負荷分散をやろうとするとドエライ大変なので、残念ながら妥協のしどころか。
CloudBuildは動かない
CloudBuildでビルドしたWebGL版がエラーを吐いたけどローカルでビルドすれば動いた。つらい。自前でやるしか。
これについては、Windows環境で開発してるとCloudBuild環境ではエラーになるケースがあるとかじゃないかな。知らんけど。
Logは動く
PlayerSettingsでDebug.Log出力をオミットでき……できねえ! ↓のコードで止める。
#if !UNITY_EDITOR void Start() { Debug.logger.logEnabled = false; } #endif