結果だけでなく過程も見てください

日々の奮闘を綴る日記です。

Unityで親子関係のある子オブジェクトのワールド座標(絶対座標、外部座標)をインスペクタに表示する方法

※本記事では絶対座標、外部座標などの呼び方を「ワールド座標」に統一します。

Unityのヒエラルキーで親子関係がある場合、子のオブジェクトの座標は親からの相対座標(Local Position)のみが表示されます(以下赤枠部分)。
f:id:taiyakisun:20210323222934p:plain

しかし、例えばアクションゲームでステージにオブジェクトを整列して配置したい場合など、相対座標では不便で、ワールド座標の方が都合が良いことが多々あります。今回はインスペクタにワールド座標を表示する方法をご紹介します。

AssetsにEditorを追加する

以下のようにAssets直下にEditorというフォルダを追加します。
f:id:taiyakisun:20210323223326p:plain

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コンポーネントにワールド座標が表示されるようになります。
f:id:taiyakisun:20210323223722p:plain

プライバシーポリシー お問い合わせ