【Unity】SetParentで子の位置が更新されてしまうのを防ぐ
度々なるので忘れないようにメモ
解決法
そもそも公式によると↓とのこと Unity - スクリプティング API: Transform.SetParent
public function SetParent(parent: Transform, worldPositionStays: bool): void;
サンプルコード
private GameObject child; void hoge(Transform parent) { child.SetParent(parent, false); // ここをtrueにすると相対位置を補完する }
いっそのこと拡張メソッドにしてもいいかもしれません
public static class Extension { // もっと良い関数名つけて! public static void SetParentLocal(this Transform self, Transform parent) { self.SetParent(parent, false); } }
child.transform.parent = parent
や child.transform.SetParent(parent)
で事故らないようにしましょう。