【Unity】recttransformから幅、高さをとるには?
recttransformから幅、高さをとるには?
recttransformから幅、高さを取りたいと思うことは多いと思います。
sizeDeltaを使用して取得していましたが、Anchorの設定がstretchの際に正常に値が取得出来なかったのでご紹介します。
下記記事を参考にさせていただきました。
http://sprfield.hatenablog.jp/entry/2017/03/19/233623
Unityバージョン:Unity 2018.3.13f1
比較
手順
①width:720 height:1080のScreenを用意
②width:100 heigh:100 Anchor:stretchのImageを用意
③sizeDelta、rectをDebug.Log()で確認
参考記事にもありましたが、rectだと正常に幅、高さが取得出来ていますね。
一方、sizeDeltaの値はおかしいですね……。
Screenの幅、高さからImageの幅高さを引くと確かに(620,980)にはなりますが、Logに出力されている値のマイナスはどこからきたものなのでしょう……。
色々探していると、下記記事で原因がわかりました。
https://codeday.me/jp/qa/20190320/440891.html
AnchorがstretchなのでAnchor間の幅、高さはCanvasと同じになります。
CanvasはScreenと同じ大きさなので(720,1080)。
(Imageの幅、高さ) - (Anchor間の幅、高さ) = sizeDelta
(100,100) - (720,1080) = (-620,-980)
こういうことだったんですね。
まとめ
・幅、高さを取るにはrecttransform.rect
・sizeDeltaは(オブジェクトの幅、高さ) - (アンカー間の幅、高さ)
Unityのドキュメントも確認していましたが、ちょっと分かり辛かったですね。
https://docs.unity3d.com/ja/current/ScriptReference/RectTransform-sizeDelta.html