Unityで作られたファイルがブラウザで動作しない
Unity WebGLをブラウザで開こうとしたところ、動作しなかった。最初は、WebGLがChromeやSafariでアクティベートされていないのが問題だと思い、再設定をしてみたが改善せず、、、
M1 Mac (Big Sur)とChrome , safariで、Unity のWebGLが動いてくれないんですが、同じ症状の方いますか?
— 伊藤光平|Kohei Ito (@acetrigger_99) January 1, 2021
そんなことをつぶやいたら、@gtk2kさんがエラーをもとに解決方法を教えてくれた。
解決方法
指示通りブラウザのコンソールを確認したら、以下のエラーが出力された。
Uncaught TypeError: Cannot read property '1' of null
at UnityLoader.js?t=1591981784037:3
at UnityLoader.js?t=1591981784037:4
Unity WebGLでは、index.html
にてUnityLoader.js
がローディングされる。ここで、OSやブラウザのバージョン判定を行っている。
以下のようにUnityLoader.js
を修正すると動作が確認された。
// 修正前
case"Mac OS X":p=/Mac OS X (10[\.\_\d]+)/.exec(a)[1]
// 修正後
case"Mac OS X":p=/Mac OS X (1[\.\_\d]+)/.exec(a)[1]
macOS Big Surは11.xとなっており、修正前の正規表現(10[\.\_\d]+)
だと10.xしか認識されないことになってしまう。
追記(2020/01/10)
@aguroshou0413さんにコメントで以下のコードだと、Big SurだけではなくCatalinaでも動くと教えていただいた。
(1[0-1][._\d]+)/
だと、10.xも11.xも内包する。
case"Mac OS X":p=/Mac OS X (1[0-1][._\d]+)/.exec(i)[1];
以下で、MacのOSを確認できる。
$ sw_vers
ProductName: macOS
ProductVersion: 11.1
BuildVersion: 20C69
アドバイスを下さった@gtk2kさん、@aguroshou0413さん、ありがとうございました!
ビルドしたファイルの実行
ビルドしたファイルのディレクトリ上で、以下のコマンドを実行。
python3 -m http.server 8000
その後、以下のリンクをブラウザで開く。
http://localhost:8000