Unityで親子関係のある子オブジェクトのワールド座標(絶対座標、外部座標)をインスペクタに表示する方法
※本記事では絶対座標、外部座標などの呼び方を「ワールド座標」に統一します。
Unityのヒエラルキーで親子関係がある場合、子のオブジェクトの座標は親からの相対座標(Local Position)のみが表示されます(以下赤枠部分)。
しかし、例えばアクションゲームでステージにオブジェクトを整列して配置したい場合など、相対座標では不便で、ワールド座標の方が都合が良いことが多々あります。今回はインスペクタにワールド座標を表示する方法をご紹介します。
AssetsにEditorを追加する
以下のようにAssets直下にEditorというフォルダを追加します。
Editorにソースコードを追加する
作成したEditorフォルダ配下にスクリプトを追加します。名前は適当でよいです。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; [CustomEditor(typeof(Transform))] // こうすることによりTransformコンポーネントのインスペクタに、カスタム項目が追加できる public class WorldPosCS : Editor { Transform _t = null; private void OnEnable() { _t = target as Transform; } public override void OnInspectorGUI() { base.OnInspectorGUI(); EditorGUILayout.Vector3Field("World Position", _t.position); // ワールド座標を表示する } }
これにより、以下のようにインスペクタのTransformコンポーネントにワールド座標が表示されるようになります。