猫茶の研究日誌

ゲーム開発などの技術や、そのほか趣味などの雑記。

【Unity】ProBuilderの挙動が何故かおかしい

はじめに・症状

まずはこのgifを見てください。

ProBuilderでエッジループを追加(Insert Edge Loop)しようとしただけなのに…

怒涛のエラー

NullReferenceException: Object reference not set to an instance of an object
UnityEngine.ProBuilder.ProBuilderMesh.get_edgeCount ()
GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

面や辺が欠ける…

仕舞いには、Undo/Redoもめっちゃぶっ壊れてます。

エッジループに限らず、とにかくProBuilderの様子がおかしい。
とても使えるとは言えない。

試したこと

以下の2つでは、問題なく動作することを確認しました。

  • 違うPCで問題発生しているプロジェクトを開く
  • 新規プロジェクトを作成して試してみる

ということは、プロジェクトのLibraryフォルダ以下全削除で直るのでは…?と思い試したましたが、全く直らず。

なんやこれ。

解決法

Localization Scene ControlsのTrack Changesのチェックを外す。
それだけです。

考察

考察ってほどのものでもないですが…

Localization Scene ControlsのTrack Changesにチェックが入っている状態で選択したゲームオブジェクトに変更があると、
自動で「GameObjectLocalizer」コンポーネントが勝手に付きます。

docs.unity3d.com

明らかにこいつが狂わせています。
(というか当たり前だけどこれのせいでエディタ全体の挙動がおかしかった)

これでとてつもなく長い時間が吸われました。
ProBuilderの不調の原因が、Localizationで不要な設定をしたことであるなんて想像しなかったから…
英語で検索掛けても、該当する情報が見当たらず、本当に絶望してました…

Localization Scene ControlsのTrack Changesには間違えてチェックを入れないように、以後気を付けます。
以上。