【Unity】スクリプトからオブジェクトを生成、削除する方法!オブジェクトの位置、角度を指定して生成することも可能

スクリプトからオブジェクトを生成する方法

Instantiate関数を使用してオブジェクトを生成します。この関数は、生成したいオブジェクトのプレハブ(Prefab)を指定します。

Instantiate("生成したいオブジェクト");

以下はコード例です。これを適当なゲームオブジェクトに追加して、インスペクターに生成したいオブジェクトのプレハブを設定します。

スペースキーを押すとオブジェクトを生成します。

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

public class GenerateObject : MonoBehaviour
{
    public GameObject prefab;

    // Update is called once per frame
    void Update()
    {
        // スペースキーが押されたらオブジェクトを生成
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Instantiate(prefab);
        }
    }  
}

位置や角度を指定する方法

関数の引数に位置や角度も指定することができます。第一引数に、生成したいオブジェクト、第二引数で位置、第三引数で角度を設定できます。

// オブジェクトのプレハブを指定して生成
GameObject newObject = Instantiate(prefabObject, spawnPosition, Quaternion.identity);

使用例

以下のスクリプトを Unity エディタ内の GameObject にアタッチすると、Start メソッドが実行され、指定したプレハブ prefabObject が、指定した位置 spawnPosition角度 rotationAngleで生成されます。

using UnityEngine;

public class GenerateObject : MonoBehaviour
{
    public GameObject prefabObject; // 生成するオブジェクトのプレハブ
    public Vector3 spawnPosition = new Vector3(0f, 0f, 0f); // 生成する位置
    public float rotationAngle = 0f; // 指定する角度

    // Update is called once per frame
    void Update()
    {
        // スペースキーが押されたらオブジェクトを生成
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // オブジェクトのプレハブを指定して生成し、指定した角度で回転
            GameObject newObject = Instantiate(prefabObject, spawnPosition, Quaternion.Euler(0f, rotationAngle, 0f));
        }
    }  
}

インスペクターから角度、位置が調節できます。

オブジェクトを削除するには

オブジェクトの削除には、Destroy関数を使用します。

Destroy("削除したいオブジェクト");
タイトルとURLをコピーしました