さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

【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環境ではエラーになるケースがあるとかじゃないかな。知らんけど。

toriden.hatenablog.com

Logは動く

 PlayerSettingsでDebug.Log出力をオミットでき……できねえ! ↓のコードで止める。

#if !UNITY_EDITOR
        void Start()
        {
            Debug.logger.logEnabled = false;
        }
#endif

参考

qiita.com