Unity: Prefabをスクリプトからインスタンス化する では、public宣言したBeePrefabに、InspectorからPrefabを指定する必要がありましたが、その必要がなくなります。
まずResourcesフォルダを作成して、以下のような構成でPrefabデータを格納しました。
/Resources/Prefabs/Beeスクリプトは以下のように変わります。
using UnityEngine;
using System.Collections;
public class GameScene : MonoBehaviour {
//public GameObject BeePrefab; <-- いらなくなった
void Start () {
for (int i=0 ; i<3 ; ++i) {
//Instantiate(BeePrefab,new Vector3(-50+i*50,0,0),Quaternion.identity);
Instantiate(Resources.Load("Prefabs/Bee"),new Vector3(-50+i*50,0,0),Quaternion.identity); // こちらを使います
}
}
void Update () {
}
}
Resourcesフォルダ内のデータ読み出しクラスがResourcesって分かりやすい!この方法の利点と欠点をまとめると…
利点
- リソースデータの呼び出しが簡潔になる。
- 動的に呼び出すデータを変更する仕組みが作りやすい。
欠点
- スクリプトの再利用性がなくなる場合がある。
- 使わなくなったデータがキャッシュに残るので適当にUnloadしてやる必要がある。
ちなみに上記スクリプトですが、下のようなフォルダ構成でも正常にデータを読み出せます。
その辺りのことはまた次回。
/Test/Resources/Prefabs/Bee
こちらも合わせてどうぞ。
0 件のコメント:
コメントを投稿