【Unity】ビルド形式がWebAssembly(wasm)ではなくasm.jsになってしまった場合の対処方法

2020年8月15日Unity

スポンサーリンク

Unityでビルドしていたら、前まではWebAssembly(wasm)でビルドされていたのに、いつのまにかasm.jsビルドになっていた。

その時に、ビルドログに以下のような文言が出ていた。

PlayerSettings.WebGL.linkerTarget should be set to WebGLLinkerTarget.Wasm in your script.
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
PlayerSettings.WebGL.memorySize is set to 256 but it will not have any effect on WebAssembly builds.
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

wasmでビルドされるべきであるが、asm.jsビルドになっているよ的な文言だった。

“PlayerSettings"内の"Publishing Settings"のLinkerTargetの設定でWebAssemblyに設定できるということなので、探したが、

Unity2019.1からはLinkerTargetの項目自体がなくなっておりデフォルトでWebAssemblyになっていて、Unityの画面からは設定を変えれないらしい。。。

私はUnity2019.1以上だったので画面には出ていなかった。

wasmビルドからasm.jsビルドに変わってしまった原因は最後に書くとして、Unityの画面以外からLinkerTargetを変更する方法を記載する。

LinkerTargetの変え方

1."プロジェクトフォルダ/ProjectSettings"内のProjectSettings.assetファイルをメモ帳などで開く。

2.その中の"webGLLinkerTarget"という項目を見つける。

3."webGLLinkerTarget"の値が0だとasm.jsビルド、1だとWebAssembly(wasm)ビルドなので、1に変える。

4.これでビルドするとWebAssembly(wasm)ビルドになっているはず。

wasmビルドからasm.jsビルドに変わった原因

Unity2019.1以上はデフォルトでWebAssembly(wasm)ビルドであり、私も最初はWebAssembly(wasm)ビルドだったのだが、ある時からなぜかasm.jsビルドに変わっていた。

確かなことはわからないが、考えられることは、Asset StoreからImportしたAssetによって起きた可能性がある。

一部のAssetはImportするときに、以下のようなメッセージが出ることがある。

Importing a complete project will overwrite your current project settings. If you're not sure what this means, you should switch to an empty project before importing this package

project settingsが上書きされるという警告なので、そのままImportしていったら、もしかしたらビルド形式も上書きされることもあるのかも。

まあ、確実なことではないですが。。。

Unity

Posted by ton