【Unity】uGUIのプレハブをインスタンス化する

昔ハマった内容をメモっておくシリーズ。

大した話じゃないんですけど、uGUIのオブジェクトをプレハブ化して、こいつをScriptでインスタンス化するとき、以下のようにしてハマりました。

var instance = Instantiate (buttonPrefab);
instance.transform.SetParent (gameObject.transform);

SetParentメソッドには第二引数があり、デフォルトではこれがtrueになっています。
docs.unity3d.com

worldPositionStays
true である場合、親との相対的な位置、角度、スケールは、設定される前のオブジェクトのワールド空間の位置、角度、スケールを維持して変更されます。

したがって、上のようなコードだと、意図しない座標にオブジェクトが配置されてしまいます。

というわけでSetParentの第二引数にfalseを指定してやれば解決。

このスクリプトはインスタンス化するプレハブの親となるオブジェクトにアタッチされているていです。

スポンサーリンク