実現したいこと
・画面上のUIの幅を取得したい
前提
Unityでマウスの座標、ゲームウィンドウのwidth、UIのwidthをそれぞれ取得して、マウスに追従するがウィンドウをはみ出さないUIを表示しようとしています。
CanvasはWorld Spaceを利用しています。
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に乗算するイメージはあるのですがうまい方法が思いつきません。
当然ながらorthographicSizeを変えると画面上のUIの大きさは変わりますが、こちらの幅を取得する方法が分からないという質問です。
rect.widthはorthographicSizeを変えても全く同じ「1000」のままです。
試したこと
ワールド座標に変換して取得してみたりしましたが、そもそも桁が全く合いません。
World SpaceのUIなので、ワールド座標とスクリーン座標が関わっている気もしているのですが…
補足情報(FW/ツールのバージョンなど)
Unity 2021.3.28f
0 コメント