Unityでスクリプトからオブジェクトを作成する方法

この記事はだいぶ前に書かれたものなので情報が古いかもしれません
作成というか正確には複製ですね

この記事を三行にまとめると

オブジェクトの作成方法
正確には複製方法
Instantiate
この記事は以下の動画の中に出てきたサンプルコードを載せたものです。コピペなどが必要なときに使ってください。



タイトルではオブジェクトの作成と言っていますが、正確にはオブジェクトの複製と言った方が良いかもですね。手順としては元となるオブジェクトを用意し、それをスクリプトで複製するという形です。

元となるオブジェクトはヒエラルキーにあるオブジェクトでも良いですし、Prefabを複製することもできます。

コードはこんな感じです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MakeJewel : MonoBehaviour {
   public GameObject jewel;
   public Transform parent;

   public void Make() {
     GameObject clone = Instantiate(jewel, parent);
     clone.transform.localPosition = new Vector3(0, 100, 0);
   }
}

jewelは元となるオブジェクトです。今回は宝石の画像オブジェクトをここに入れています。

parentは複製先の親オブジェクトです。新たに複製したオブジェクトはこのparentの子オブジェクトになります。親オブジェクトを指定しなくてもエラーにはなりませんが、ImageやText、ButtonなどはCanvasオブジェクトの中にないといけないので、これらを複製する場合はCanvasオブジェクトを親にすると良いでしょう。

Instantiateのドキュメント
https://docs.unity3d.com/ja/2022.2/ScriptReference/Object.Instantiate.html
 もしかしたら何か関連しているかも? 
 質問や感想などお気軽にコメントしてください