FC2ブログ
    09 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 11

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Unity】ResourcesフォルダからInstantiateしてます?意外と便利っすよね? 

    午前中は昼過ぎまで打ち合わせ、午後は仕様検討の会議してたらこんな時間になってしまいました!
    坂内っす。

    現在本格育成シミュレーションゲーム制作中です。
    何が本格かって?
    放置育成じゃないっすよ?それだけなんですけどね。

    で、本日の話題ですが、みなさんオブジェクトをInstantiateするときって、ふつうにPrefabをPublicとかにくっつけて、Instantiateしてます?
    俺はずっとそうやってました。

    でもInstantiateするオブジェクトが多岐にわたる場合とかめんどいっすよね。

    って時に、ReosourcesフォルダからInstantiateしちゃえるらしいっす。

    例えば、以下のようにResourcesフォルダにPrefabを置いておきます。
    今回はCubeというPrefabを用意しました。


    んで、なんか適当にPrefabをInstantiateしてみます。

    using UnityEngine;
    using System.Collections;

    public class PrefabTest : MonoBehaviour {

    const string DIR_CUBE_PREFAB = "Prefabs/";
    const string NAME_CUBE_PREFAB = "Cube";
    readonly Vector2[] RANDOM_POSI = {new Vector2(-5f,-10f),new Vector2(5f,10f)};
    const float POSI_Z = 20f;

    void Start () {
    // Cube生成
    for(int i = 0 ; i < 5 ; i++){
    GameObject cube =
    Instantiate(Resources.Load(DIR_CUBE_PREFAB + NAME_CUBE_PREFAB))
    as GameObject;
    float x = Random.Range(RANDOM_POSI[0].x,RANDOM_POSI[1].x);
    float y = Random.Range(RANDOM_POSI[0].y,RANDOM_POSI[1].y);

    cube.transform.localPosition = new Vector3(x,y,POSI_Z);
    }
    }
    }


    こんな感じで実行すると、こうなります↓


    もちろんランダムなので、実行の度にCubeの場所が変わります。

    GameObject cube = Instantiate(Resources.Load(DIR_CUBE_PREFAB + NAME_CUBE_PREFAB)) as GameObject;
    の場所ですが、もちろん以下でもおk!

    GameObject pref = Resources.Load(DIR_CUBE_PREFAB + NAME_CUBE_PREFAB);
    GameObject cube = Instantiate(pref) as GameObject;

    Resources.Load(Prefabの場所と名前);

    で、できるようっす。

    これで、prefabの名前に0とか10とかつけて、ランダムのオブジェクトが生成できるってことっすね。

    あ、ちなみにこうやってInstantiateした時でも、Resources.UnloadUnusedAssets()とかで、リソース解放しないとダメなんですかね?

    リソース解放まわりよく分かっていないんですよね・・・・・どなたか教えて頂ければ幸いです!

    え?今頃こんなネタ書くなって?すいません

    ネタ探しの旅に出ますorz アデュ~ノシ

    Category: 開発日記(Unity)

    Tag: Unity 
    tb 0 : cm 0