うにてぃブログ

主にUnityとC#に関する記事を書いていきます

RectTransform

【Unity】RectTransform の範囲内で重ならないようにランダムで配置する

親の RectTransform 内に重複を考慮せずに、ランダムに配置した場合は 下図のように重複してしまう場合がある そのため、重複しないようにランダムに配置するスクリプトを作成した これにより、上図のように配置することができる もちろん、配置する数が多す…

【Unity】RectTransform の値を Inspector から変更できなくする

Content Size Fitter や LayoutGroup などを使っていると、Inspector の値を変更できなくなる これを実現するためには、DrivenRectTransformTracker を利用する DrivenRectTransformTracker は 登録した RectTransform の値を Inspector で変更できなくし ス…

【Unity】同じフレームで RectTransform を再構築する処理

ContentSizeFitter 等を利用した RectTransform では サイズを確定させるためには 1フレーム待つ必要があります もし、待ちを無くす場合は以下のどちらかのメソッドを呼び出すことで 1フレームの待ちをせずサイズを確定させることができます Canvas.ForceUpd…

【Unity】カメラの Rect を RectTransform に合わせる

UI 上に 3D モデルを出したい際には RenderTexture を利用したりするが、 メモリを食ってしまったり、汚かったりする その場合、UI 上に映るように 3D モデル を別カメラで写してやることがある この際に UI の位置が変わるたびに、カメラの Rect を調整する…

【Unity】RectTransform の スクリーン座標の Rect を取得する

hacchi-man.hatenablog.com の記事に内容を追加して拡張メソッドとして利用できるようにしたものです GetWorldCorners を利用すると RectTransform の4角の座標を取得することができる この際に Canvas の RenderMode が Overlay じゃない場合は、座標変換が…

【Unity】PointerEventData を利用して RectTransform の Rect を取得する

RectTransform の Rect を取得するには、 Canvas が Overlay 以外の場合 Camera が必要になり、自前で取得処理をする必要がある それが面倒だったので PointerEventData の enterEventCamera を利用して楽に Rect を取得する public static class RectTransf…

RectTransform の Pivot が Center の位置の座標を取得する

public static Vector2 GetCenterPosition(RectTransform rect) { var position = rect.transform.position; // 真ん中Pivotじゃなければ真ん中を計算する if (rect.pivot != new Vector2(0.5f, 0.5f)) { var scaleX = rect.transform.lossyScale.x; var sca…

【Unity】RectTransform の 中心座標を取得する

RectTransform の位置を取得するとPivot に応じた位置が取得できる たまに Pivot (0.5, 0.5) の場合の位置を取得したい場合に利用できます using UnityEngine; public static class RectTransformExtension { public static Vector3 CenterPosition(this Rec…

【Unity】特定の RectTransform の範囲内かどうか判定する

RectTransform から Bounds を取得し、Bounds を用いて判定を行うことで範囲内かどうか知ることができます RectTransformUtility.CalculateRelativeRectTransformBounds を利用することで Bounds が取得できますが、 これは子供の RectTransfrom も対象にし…

【Unity】UI を親にフィットさせる

RectTransform で サイズを変えた際に子供のサイズも同じように変えたい場合 Stretch に変えるだけでは下図のように子供のサイズが想定しないようになります 左:もともと 右:サイズを10倍してスケールを1/10にしたもの これを解決するには Anchors を調整しL…

【Unity】RectTransform の Pivot 変更

RectTransform を Scale した場合 Pivot の位置から Scaleされるので Pivot (0.5, 0.5) 以外の場合変な Scale 処理になってしまう なので Scale処理の間は Pivot を (0.5, 0.5) にして終わったら Pivot を戻すことでいい感じに Scaleさせることができる 単純…

【Unity】RectTransform の Rect を Scene View に描画する

UI を作成している際に親の RectTransform の Rect を見つつ作業したいが 基本的には選択しているものしか範囲がわからないので UI を作りづらい これの解決方法として、編集する RectTransform 選択時親の Rect を描画することにする RectTransform の Rect…