ヲタクの戯言

オブジェクトを呼び出したい時

Unity 3Dでオブジェクトを呼び出したい時

Unityをやってるとこのオブジェクトを呼び出ししたいとか、置く数が多すぎて一つ一つ置いていくのが面倒くさい時があると思います。(実行時に置けるだけで、Sceneを編集してる時にまとめて置けるわけではない)

Instantiate

とりあえず使用例から

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

public class AutoPut : MonoBehaviour
{
    public GameObject obj;
    
    void Start()
    {
        GameObject A = Instantiate(obj) as GameObject;
        A.transform.position = new Vector3(0.0f, 0.0f, 0.0f);
    }
}

この様にして実行すると下の図のように座標(0,0,0)にあらかじめ作っておいたキューブが置かれる。

これを複数回行うことで大量のオブジェクトを配置することができる。例えば

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

public class AutoPut : MonoBehaviour
{
    public GameObject obj;
    
    void Start()
    {
        for (int a = 0;a<=50;a += 5)
        {
            GameObject A = Instantiate(obj) as GameObject;
            A.transform.position = new Vector3(a, 0.0f, 0.0f);
        }
    }
}

この様に変更すると

等間隔にオブジェクトを配置できる。

今度は、Resoucesから引っ張ってくる方法

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

public class AutoResource : MonoBehaviour
{
    Object ob;
    GameObject obj;

    void Start()
    {
        ob = Resources.Load("Cube");
        obj = (GameObject)Instantiate(ob, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity);
    }
}

今度のはGameObjectを後から入れるのではなく、Resourcesフォルダ(無い時は自作する)からオブジェクトを呼び出している。違いについては作者があまり理解していない。正直Publicの方が使い勝手はいいと思う。

-ヲタクの戯言

©2020-2021 HIDELOG All Rights Reserved.