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のプロジェクトの任意の場所にコードを追加することで解決しました。
下記のサイトに解決方法が書いてありました。
Resolved - (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ビルドができました。
コメント