tk3118’s blog

技術ブログっぽいただのブログです。

【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 = parentchild.transform.SetParent(parent)で事故らないようにしましょう。