よく使うので備忘録として書きます。
prefabの動的生成
GameObject obj = (GameObject) Resources.Load("Prefabs/Prefab1");
GameObject GeneratedObj = Instantiate(obj, Vector3.zero, Quaternion.identity);
Resources.Load("パス")でResourcesフォルダ内のファイルをロードできるのですが、後ろのカッコ内はパスを入力できるので、
「Resourcesフォルダ内のPrefabsフォルダの中にあるPrefab1」と指定できます。
※Resourcesフォルダは自分で作る必要があります。
その後、Instantiate(生成するオブジェクト, 位置, 回転)で生成できます。
Resources.Loadについて
ファイルをResourceフォルダの正確な場所に配置しなければならないので使い勝手が悪い。
そこでインスペクター上からPrefabを設定できる方がいいかもしれない。
[SerializeField] GameObject obj; GameObject GeneratedObj = Instantiate(obj, Vector3.zero, Quaternion.identity);
ちなみに
子オブジェクトとしてPrefabを生成したい時がある
と思うのですが、
その場合は上記のスクリプトに
obj.transform.parent = content.transform;
と足すことでできます。※contentは親オブジェクト
しかしUIを子オブジェクトとして生成する場合、上記のようにではなく
obj.transform.SetParent(content.transform, false);
のほうが良いらしいです。
Prefab生成時に実行されるもの
StartやAwakeなど、素の状態だとゲーム開始時に実行されるものが実行される。