RectTransform を Scale した場合 Pivot の位置から Scaleされるので
Pivot (0.5, 0.5) 以外の場合変な Scale 処理になってしまう
なので Scale処理の間は Pivot を (0.5, 0.5) にして終わったら Pivot を戻すことでいい感じに Scaleさせることができる
単純に pivot の値だけ変更したとしても正しい挙動にならないため
pivot と localPosition 両方を変更してあげる必要がある
コード
public static void SetPivot(this RectTransform self, Vector2 v) { var size = self.rect.size; var deltaPivot = self.pivot - v; var deltaPosition = new Vector3(deltaPivot.x * size.x, deltaPivot.y * size.y); self.pivot = v; self.localPosition -= deltaPosition; }