LoginSignup
10
5

More than 3 years have passed since last update.

macOS Big Sur にてUnityLoader.js が原因でWebGLが動作しないとき

Last updated at Posted at 2021-01-02

Unityで作られたファイルがブラウザで動作しない

Unity WebGLをブラウザで開こうとしたところ、動作しなかった。最初は、WebGLがChromeやSafariでアクティベートされていないのが問題だと思い、再設定をしてみたが改善せず、、、

そんなことをつぶやいたら、@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を修正すると動作が確認された。

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も内包する。

UnityLoader.js
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

参考記事

Bug? Generated UnityLoader.js fails in iOS 14 public beta

JavaScriptでブラウザとOSを判定する2つの方法

10
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5