
スタッフブログ
【Unity】Windowsユーザー名が日本語だとBuildが落ちる問題にハマった話
こんにちは。NANAシステム開発SYです。たまに技術的なことも書いていこうと思います。
今回は Unity でビルドをしたときに遭遇した、「Windowsログインユーザー名が日本語だとビルドがこける」という問題について書いてみます。Unityが外国製なので、仕方ないと言えばそうなんですが、解消しないといけないですからね。
検索して出てくる解決策は、ほとんど以下の内容でした。
「1バイト文字のユーザー名で Windows ユーザーを作り直す」
でも、ユーザー作り直しってそんな簡単にやりたいもんじゃないですよね。
ということで、今回は 「何が起きているのか?」を正しく理解して対処する という方針で進めました。
■ まずはエラーログから読み解く
Unity のビルド時に表示されたエラーメッセージはこちら。
[CXX1429] error when building with cmake …
C++ build system [prefab] failed while executing
さらに詳細ログを見ていくと以下のようなことが書いています。
つまり、cmake が 2 バイト文字(日本語)を含むパスを処理できずに落ちているわけです。
Unity は表向きは日本語表記に対応しているのですが、
内部のビルド処理ではまだまだ 1 バイト文字前提の部分が残っています。
これが原因で、.gradle や Temp が参照されるタイミングでエラーになります。
■ 解決方針
ポイントは次の2つ。
1. cmake が参照する “ユーザーホーム” を 1 バイト文字のパスに置き換える
2. Unity や Windows が一時利用するフォルダ(Temp)も同様に変更する
では順番に設定していきます。
【対応方法①】Unity 側のパス設定を変更する
Unity の External Tools と GI Cache の設定を変更します。
▼ External Tools の設定
Edit → Preferences → External Tools
ここで以下を設定します
- User Home
空欄になっている場合、1 バイト文字だけで構成されたフォルダ を指定します。
例)C:\UnityUserHome など
※ フォルダは先に作っておく必要あり
- keystores Dedicated Location
こちらも同じく 1 バイト文字パス を指定します。
▼ GI Cache の設定
Preferences → GI Cache
1.「Custom cache location」 にチェック
2. Browse から 1 バイト文字のパスを選択
3. Clean Cache を押してキャッシュをクリア
これで、Unity が内部で参照するキャッシュフォルダが安全なパスへ切り替わります。
【対応方法②】Windows の TEMP/TMP を変更する
cmake が参照する –output パスは Windows の TEMP/TMP に紐づくため、ここも 1 バイト文字パスに変更します。
▼ 環境変数を変更する手順
1.タスクバーの虫眼鏡アイコンから「sysdm.cpl」を検索して開く
2. 詳細設定 → 環境変数 をクリック
3. ユーザー環境変数の TEMP と TMP を編集し、1 バイト文字だけのパス に変更する
例) C:\Temp
C:\WorkTmp
※ ここも事前にフォルダを作っておく必要があります。
▼ 最後に再起動
環境変数の変更は OS 再起動が必須です。
再起動後に Unity を開いてビルドすると…
無事にビルドが通りました!🎉
■ まとめ
今回の問題は、
・cmake が 2 バイト文字(日本語ユーザー名)を含むパスを処理できない
・Unity/Gradle の内部処理が ユーザープロファイル配下を参照する仕様
という2つが重なったことで発生していました。
「ユーザーを作り直す」という力技ではなく、Unity と OS の参照パスを1バイト文字に逃がすことで解決できます。同じ問題にハマった方の助けになればうれしいです!









