Content Size Fitter
や LayoutGroup
などを使っていると、Inspector の値を変更できなくなる
これを実現するためには、DrivenRectTransformTracker
を利用する
DrivenRectTransformTracker
は 登録した RectTransform の値を Inspector で変更できなくし
スクリプトでのみ変更できるようにする
サンプル
最低限の実装で一度利用してみると以下のようなコードになる
RequireComponent(typeof(RectTransform))] public class SampleMonoBehaviour : MonoBehaviour { private DrivenRectTransformTracker _tracker; private void Reset() { var rect = transform as RectTransform; _tracker.Add(this, rect, DrivenTransformProperties.All); } }
変更を制限する フィールドは DrivenTransformProperties
を変更することで好きなように設定できる
DrivenTransformProperties - Unity スクリプトリファレンス
値の変更
値を変更する際には Clear
を呼び出してから、再度 Add
する必要がある
private void Change(float width) { _tracker.Clear(); var rect = transform as RectTransform; _tracker.Add(this, rect, DrivenTransformProperties.All); var sizeDelta = rect.sizeDelta; sizeDelta.x = width; rect.sizeDelta = sizeDelta; }