バッテラのハローワールド研究室

エンジニア、プログラミングに関する情報を掲載中!

【Unity】Unityで作ったアプリをWebGL形式で出力したらChromeで起動しない件について

Unity

はじめに

今日はUnityの出力時の不具合についてです。

UnityでWebGLアプリとして書き出しした後にそのアプリが起動した時にMacChromeだと起動しない現象が発生しました。

今回その解決策を共有したいと思います。

まぁMacのOSによる問題な気がしますので、新しいUnityのバージョンで解決されると信じてますが、起動せず困ってる人も少数いるかと思います。

環境

この記事の情報は次のバージョンで動作確認しています。

* MacOS BigSur (11.3.1)
* Unity (2020.1.6f1)

原因

どうやらMacOSがBigSurになってから動作しなくなっている報告が多数ありますた。

よってOS絡みの不具合だと思われます。

現状SafariFirefoxでは正常動作しているようです。

解決方法

下記のコードをcsファイルとして作り、 Assets/Editor配下に格納することで起動することができるようです。
下記スクリプトが何をしているかはよく分かってません(笑)。

// WebglPostBuild.cs

using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEngine;
 
public class WebglPostBuild
{
    [PostProcessBuild(1)]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
    {
        if (target != BuildTarget.WebGL)
            return;
 
        Debug.Log(pathToBuiltProject);
 
        string[] filePaths = Directory.GetFiles(pathToBuiltProject, "*.js", SearchOption.AllDirectories);
 
        foreach(string file in filePaths)
        {
            if(file.ToLower().Contains("loader.js"))
            {
                string text = File.ReadAllText(file);
                text = text.Replace(@"Mac OS X (10[\.\_\d]+)", @"Mac OS X (1[\.\_\d][\.\_\d]+)");
                File.WriteAllText(file, text);
            }
        }
    }
}

おわりに

自分の環境ではなんとかこの記事の手順で解決できましたので、同じ症状が発生している方は一度お試ししてみてください。