Unityで画面上のUIの幅を取得したい(Cameraはorthographic)

実現したいこと

・画面上のUIの幅を取得したい

前提

Unityでマウスの座標、ゲームウィンドウのwidth、UIのwidthをそれぞれ取得して、マウスに追従するがウィンドウをはみ出さないUIを表示しようとしています。
CanvasはWorld Spaceを利用しています。
Canvasは下記です。

Canvasの設定

発生している問題・エラーメッセージ

例えば、1920*1080のウィンドウの左の方にマウスを置いて、マウスに追従するUIを表示するとすると、
マウスのX座標(400ぐらい)Input.mousePosition
ウィンドウの幅(1920)UnityEngine.Screen.width
UIの幅(1000)UI.GetComponent<RectTransform>().rect.width
のようなものが取得できますが、この内「UIの幅」だけが不正な値を取得している気がしてなりません。
具体的に言うと、CameraのorthographicSizeを変えてもUI.GetComponent<RectTransform>().rect.widthは変わらない値が返ってきます。
あくまで「画面上」のUIの幅を知りたいので、orthographicSizeを小さくすれば、画面上のUIは大きくなって、取得したい数字は大きくなるはずです。
おそらくorthographicSizeを利用した係数をrect.widthに乗算するイメージはあるのですがうまい方法が思いつきません。

orthographicSize2のときの幅
orthographicSize3のときの幅
当然ながらorthographicSizeを変えると画面上のUIの大きさは変わりますが、こちらの幅を取得する方法が分からないという質問です。
rect.widthはorthographicSizeを変えても全く同じ「1000」のままです。

試したこと

ワールド座標に変換して取得してみたりしましたが、そもそも桁が全く合いません。
World SpaceのUIなので、ワールド座標とスクリーン座標が関わっている気もしているのですが…

補足情報(FW/ツールのバージョンなど)

Unity 2021.3.28f

コメントを投稿

0 コメント