バッテラが如く

プログラミングしましょ!

【Unity】WebGL形式で出力したらChromeで起動しなかった件について (UnityRoom)

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

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

※開発環境

  • 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);
                }
            }
        }
    }
    

    あとがき

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

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