ゲーム備忘録

UnityでのWebGLビルドに失敗してしまう(Mac)

UnityでWebGLのビルドをしようとしたら下記のようなエラーが表示されてビルドに失敗した。

System.ComponentModel.Win32Exception (2): No such file or directory
   at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo
   at System.Diagnostics.Process.Start()
   at Unity.IL2CPP.Shell.SetupAndStart(ExecuteContext context, Boolean asyncMode) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Shell/Shell.cs:line 423
   at Unity.IL2CPP.Shell.ExecuteAsync(ExecuteArgs executeArgs, IExecuteController controller, Boolean asyncMode) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Shell/Shell.cs:line 299
   at Unity.IL2CPP.Shell.Execute(ExecuteArgs executeArgs, IExecuteController controller) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Shell/Shell.cs:line 355
   at Unity.IL2CPP.Building.CppProgramBuilder.ProvideObjectFile(IntermediateObjectFileCompilationData data) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Building/CppProgramBuilder.cs:line 334
   at Unity.IL2CPP.Building.ParallelFor.<>c__DisplayClass1_0`2.<RunWithResult>b__0(Object o) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Building/ParallelFor.cs:line 78

理由はmacOS 12.3へのアップグレードのタイミングでPythonが削除されてしまったことが理由らしい。
PythonをインストールしたあとUnityのプロジェクトの任意の場所にコードを追加することで解決しました。
下記のサイトに解決方法が書いてありました。

Bug - (Case 1412113)[BuildError] OSX 12.3 and Unity 2020.3 - constant build errors

開発環境は下記の通りです。

  • Unity 2020.3.17f1
  • PC MacBook Pro(13-inch, 2018, Four Thunderbolt 3 Ports)
  • OS macOS Monterey バージョン12.3.1

対処方法

Python2.7をPCに入れ、その後Unityのプロジェクトの任意の場所にコードを追加します。
まず現時点でpaythonが入っていないことを確認します。
ターミナルを起動し下記コマンドを実行します。

$ python --version

pythonが入っていない場合

zsh: command not found: python

と表示されます。
この場合pythonをインストールします。
下記のサイトを参考にインストールしました。

MacにインストールされているPythonのバージョンを確認する方法とインストール

諸々設定をして下記(2.7.Xの最新版)をインストール

pyenv install 2.7.18

インストールしたPythonを使用するようにコマンドで設定を変更します。

$ pyenv global 2.7.18

再びバージョンを確認し2.7.18が表示されることを確認します。

$ python --version
Python 2.7.18

次にUnity上の任意の場所で新規C#スクリプトを作成し下記のコードを入力します。

#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;

public class PreBuildProcessing : IPreprocessBuildWithReport
{
    public int callbackOrder => 1;
    public void OnPreprocessBuild(BuildReport report)
    {
        System.Environment.SetEnvironmentVariable("EMSDK_PYTHON", "/Users/Admin/.pyenv/versions/2.7.18/bin/python");
    }
}
#endif

Users/Admin/.pyenv/versions/2.7.18/bin/python
の部分は自身の環境に合わせてください。
僕と同じ方法でインストールした場合は、下記のコマンドで.pyenvの場所を確認することができます。

$ pyenv versions
* 2.7.18 (set by /Users/Admin/.pyenv/version)

上記の設定を行うことで無事WebGLビルドができました。

コメント

タイトルとURLをコピーしました