もくじ
はじめに
Unity 2021.2からWebGLが正式にモバイル対応されるという情報がありましたので、試してみることにしました。結果から言うと、僕の早とちりで残念ながらUnity 2021.2でもまだモバイルデバイスのサポートはまだだったようです。Unity公式のマニュアルでもモバイル非対応であることを確認しました。どこの情報を見たのか忘れてしまいました・・・。
Unity - Manual: WebGL browser compatibility
ひとまず本記事ではUnity 2021.2でのWebGLビルドの実行の状況を以下に記します。
使用したUnityバージョンは以下の通りです。
・Unityバージョン:Unity 2021.2.4f1
プロジェクトを新Unityバージョンにアップデート
WebGLをビルドする前に以前作成した2DプロジェクトのUnityバージョンをUnity 2021.1.25からUnity 2021.2.4にアップデートしたいと思います。Unityのメジャーバージョンのアップデートなのでプロジェクトをコピーしてテストしてから本番のプロジェクトに適用することにします。
テスト方法ですが、対象のプロジェクトフォルダを丸ごとコピーして手動でUnity Hubにプロジェクトを追加し、Unity Versionを好きなバージョンに変更して起動するだけです。( 2.1)
起動できたら、まずはConsole画面でエラーが出ていないか確かめます。最初のログはバージョンをアップデートした後のパッケージ変更したというInformationなので問題なしです。
2行目の警告はVisual Studio Editor Packageの新しいバージョンが出ているというメッセージです。Package Managerで手動で該当のパッケージのアップデートをすればOKです。( 2.2)
Visual Studio Editor Package version 2.0.12 is available, we strongly encourage you to update from the Unity Package Manager for a better Visual Studio integration
3行目の警告はVisual Scripting関連のメッセージですが、古いノード情報が存在するという警告メッセージのため、後でノード情報の再設定をします。( 2.2)
4 node options failed to load and were skipped.
Try rebuilding the node options with 'Edit > Project Settings > Visual Scripting > Node Library > Regenerate Nodes' to purge outdated nodes.
まずは、Visual Studio Editor Packageをアップデートしておきます。Window → Package ManagerからPackage Managerウィンドウを開きます。Visual Studio Editor Packageと他のパッケージも新しいバージョンが出ているのがあるので適宜アップデートします。アップデートできるものは全てアップデートしておきました。( 2.3)
次にEdit → Project Settings...からVisual Scriptingの設定画面を開いて、「Regenerate Nodes」をクリックします。completedというメッセージダイアログが表示されれば、完了です。( 2.4)
もしUnity Editorのレイアウトが崩れている場合は適宜調整します。一通り整えたらゲームをテスト実行してみます。ここで起動直後にエラーが表示されなければひとまずは安心です。今回、僕のプロジェクトではエラーはでませんでした。簡単な2Dゲームなので問題なかったのでしょう。広告や他のアセット等を色々と実装しているとエラーは出やすいと思います。
Scriptエラーはコンパイルチェックで実行前に分かる場合が多いと思うのですが、Visual Scriptingのエラーはおそらく実行しないとわからないことが多いです。今回もゲーム実行時ではないのですが、Visual Script Graphのノード画面を表示させたタイミングでいくつかエラーが出ていました。ゲーム実行には影響なさそうですが、気になります。
ここまでで致命的なエラーが出ないことが分かれば、本プロジェクトの方をアップデートしても問題ないでしょう。毎回、バージョンアップ時にプロジェクトをコピーしてテストするというのは正直面倒なのですが、たまにアップデート後、致命的なエラーが出て古いバージョンに戻したいという場合があります。Unityのプロジェクトを古いバージョンに戻すこともできるのですが、切り戻しがうまくいかない可能性も考慮すると、少なくともメジャーバージョンアップ時はプロジェクトをコピーしてテストするというのは必須だと思います。
プロジェクトをGit等でバージョン管理しておけば、このようなローカル環境での手動コピーによる対応は必要ないです。
Unity 2021.2でWebGLビルド
ここからが本題ですが、Unity 2021.2でWebGLビルドを試してみたいと思います。Player Settingを見たところ、以前の設定を引き継いでいるようなのでこのままWebGLビルドを実行してみたいと思います。( 2.5)
バージョンアップデート後の最初のビルド完了まで僕のマシンで7分ぐらいでした。たぶん次からはもっと早くなると思います。
また、WebGLビルドで作成されたindex.htmlを確認してみましたが、以前と変わらず「WebGL builds are not supported on mobile devices.」というメッセージがありました。
ビルドで生成されたファイルを一式コピーしコードエディタであるAtomを使ってローカルでテスト実行させてみます。Atomでのテスト実行については前回の記事を参考にして下さい。テスト実行したところ、UnityブランドとWebGLのロゴが変更されていました。ローカルサーバーを使ったゲームの実行は特に問題ないようです。( 2.6)
次にAndroidからこのWebGLページにアクセスしてみました。以前のような警告エラーが出ますが、特に問題なく実行できました。前からですがAndroidやiOS等のモバイル機器で表示されるWebGLの標準テンプレートだと全画面表示になるように設定されています。( 2.7, 2.8)
以前、Androidでは再読み込みするとエラーでゲーム画面が表示されなくなったり、不安定でモバイルデバイスでのWebGLはまだ使えない感じでしたが、Unity 2021.2のWebGLで試した限りではエラー落ちもなく特に問題ない感じがします。これからはモバイルでも遊ぶことができるWebGLゲームを作ることができると思います。