unityのオブジェクトをC#で生成、子要素に移動する方法


※Unity実践リファレンスの内容を参考にしています。
<エンジニアのためのUnity実践リファレンス ~ ゲーム開発にすぐに役立つスクリプト入門>
https://www.amazon.co.jp/dp/B00WHEJI8W/ref=cm_sw_em_r_mt_dp_K82SFb5NXTQ27

動的にC#でゲームオブジェクトを生成し、それを特定のゲームオブジェクトの子要素として移動させるためのコードになります

    // test.cs

    // Start is called before the first frame update
    void Start()
    {
        //C#で使用する変数名にparentAという名前で作り、
        //ヒエラルキー上のオブジェクト名をParentGO_Aとして生成

        var parentA = new GameObject("ParentGO_A");
        var parentB = new GameObject("ParentGO_B");
        var childA = new GameObject("childrenGO_A");
        var childB = new GameObject("childrenGO_B");
        var childBchildA = new GameObject("childrenBchildrenGO_A");

        //childAをparentAの子要素にトランスフォーム
        //これでchildAのゲームオブジェクトを指定したゲームオブジェクトの子要素に変更
        childA.transform.parent = parentA.transform;
        childB.transform.parent = parentB.transform;

        //特定の要素の子要素にする場合に、2階層下の要素としても1回で変更できる
        //この場合は
        childBchildA.transform.parent = childB.transform;
    }

<実行前>

<実行後>

ちゃんと階層構造を持ったままゲームオブジェクトが生成されました。

この機能を使って特定の条件下で生成したゲームオブジェクトがあれば、それをFind関数を利用して見つけたのちに、子要素へ移動させるということもできそうです。