コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】UI の座標をワールド座標に変換するスクリプトの例

ソースコード

using UnityEngine;

[DisallowMultipleComponent]
public sealed class Example : MonoBehaviour
{
    [SerializeField] private RectTransform m_uiTarget;
    [SerializeField] private Canvas        m_canvas;

    private void Update()
    {
        var position = m_canvas.worldCamera.WorldToScreenPoint( m_uiTarget.position );
        position   = Camera.main.ScreenToWorldPoint( position );
        position.z = 0;

        transform.position = position;
    }
}

注意

UI オブジェクトの pivot が 0.5 以外だとズレる

参考サイト様