【Unity】WebGLにビルドできないエラーの対処法【IL2CPP】
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
WebGLにビルドできないエラーの対処法(2018.09.11 訂正)
結論
プロジェクトを引っ越しましょう!
(もしくは、クラウドビルドでビルドしましょう!)
まずプロジェクトのパスにマルチバイト文字(日本語など)が含まれていないか確認しましょう!
Export PackageでAssetsフォルダの中身を書き出し、新規プロジェクトにインポートしちゃいましょう。
私の場合、これでWebGLにビルドできるようになりました。
※エクスポートの仕方がわからない方は、下記の説明を読んでください。↑エラーが起きたプロジェクト名に日本語が使われており、新規プロジェクトでは半角のみだったので成功したようです。
また、クラウドビルドでエラーを回避したという情報もありました。
クラウドビルドのやり方は、「unity クラウドビルド」とかで調べてみてください。
エラーについても色々と調べてはみましたが、根本的な解決方法や原因はわかりませんでした。
どうもIL2CPPが怪しいようですが、どのタイミングで壊れてしまっているのか見当がつきません…。
一応エラーの詳細についても載せておきますので、ご自身の状況と合わせて確認してみてください。
↑IL2CPPがおかしいのは確かでしたが、まさか全角NGとは…。
後ほど検証したところ、ビルド対象のソースフォルダのパスにマルチバイト文字が使われていると、IL2CPPがエラーを吐きます。
正常にビルドできたプロジェクトを、全角が使われたパス配下に移動すると失敗しますし、その逆は成功します。
そんなんゆーといてや!というかエラーメッセージ出してや…
エラーについて
WebGLのビルドを実行すると、ここらへんで固まります。IL2CPPって書いてありますね。
しばらく待つと、そのままビルドが終わったと見せかけてきますが、WebGL関連のファイルは何も生成されていません。
そして、Consoleにはこのようなエラーが出ていました。
「Exception: C:\Program Files\Unity\Editor\Data\il2cpp\build\il2cpp.exe did not run properly!」とあります。
やっぱりIL2CPPがおかしいっぽいですけど、このメッセージだけでは正直お手上げでした。
このエラー、PC環境依存ではなくプロジェクト依存っぽいです。
↑パス依存です。
ビルドに失敗した人(別の人)のプロジェクトを私のPCでビルドしてみましたが、同じエラーが出てしまいました。
↑プロジェクト名に日本語が使われていたからですね…。
私のPC内の別プロジェクトは普通にWebGLにビルド出来ていたため、プロジェクト自体が悪いっぽいです。
↑日本語がry
じゃあもうプロジェクト作り直すしかないじゃん!
ということで、新規プロジェクトにお引越ししたところうまくいった次第です。
↑新規プロジェクトの名前に日本語が入っていたら治りません…。
お引越しの方法(unitypackageの作り方)
新規でプロジェクトを作成して、Assetsフォルダの中身を丸ごとお引越しする手順です。
↑これはこれで役に立つので残しておきますね。
■バックアップ
まず、何よりも先に プロジェクトのバックアップをしましょう!
プロジェクトフォルダを複製するだけでもいいですし、リモートリポジトリに上げてもいいです。
取り返しのつかない事態になることだけは避けなければなりません。
■エクスポート
バックアップができたら、今あるプロジェクトでAssetsフォルダのエクスポートを行います。
メニューバーの「 Assets → Export Package… 」を選択。
「 All 」で全てのアセットにチェックを入れて、「 Export… 」をクリックします。
ファイル名を決めるように言われるので、わかりやすい名前(プロジェクト名など)を付けてください。
これで「.unitypackage」という拡張子のファイルが作られます。(ファイル名.unitypackage)
このファイルは、エクスポートしたアセットが圧縮されているものです。アセットストアでもこの形式で配布されていたりしますね。
■インポート
新しいプロジェクトを作成したら、アセットのインポートを行います。
新しいプロジェクトのProjectビューに、先ほど作成したunitypackageのファイルをドラッグ&ドロップします。
(もしくは、メニューバーのAssets → Import Package → Custom Package… から、インポートするファイルを選択します。)
パッケージ内のどのアセットをインポートするか聞かれるので、Allを選択して、Importをクリックします。
以上でお引越し完了です。
シーンを再生して問題が無いか確認してみましょう。問題が無ければWebGLへのビルドも試してみてください。
もしこれでも解決しなかったら、素直にクラウドビルドを使いましょう。
プロジェクト名や、そのフォルダまでのパス名、確認してみてください。
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発