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 件のコメント:
コメントを投稿