【Unity】スクリプトを使ってオブジェクトを生成する方法!

Unity Unity

スクリプトを使ってオブジェクトを生成する方法!

ゲーム制作では、敵キャラクターの生成などでよく使われるスクリプトを使ってオブジェクトを生成する方法を解説します。また、応用としてGrid Layout Groupを使った生成したUIを均等に並べる方法も解説しています。

 

一般的なオブジェクト生成方法

スクリプトからオブジェクトを生成する前に、一般的にオブジェクトを生成する場合どのように生成するのか解説します。

Hierarchy→3D Object→Cube

AddCube

 

これだけでオブジェクトを生成することができます。

それでは、本題に入っていきましょう!

スクリプトからオブジェクトを生成

Instantiateを使って生成する方法を紹介します。

Prefabを用意して生成する流れになります。

それでは、スクリプトを作成しましょう!

スクリプトの作成

Asset→Create→C#Script

 

オブジェクトを生成するスクリプトなので、スクリプト名はGenerateスクリプトにします。

Generateスクリプト

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

public class Generate : MonoBehaviour
{
public GameObject prefab;//プレファブを読み込む
// Start is called before the first frame update
void Start()
{
Instantiate(prefab); //プレファブを生成
}

}

Assetsフォルダにスクリプトがあるだけではスクリプトを使うことができないので、Hierarchyにスクリプトを使うためのオブジェクトを用意します。

Hierarchy→GameObject

CreateGameObjec

GameObjectにGenerateスクリプトを追加します。

AddGenerate

HierarchyにあるCubeをAssetsフォルダにドラックアンドドロップしてPrefab化します。

 

HierarchyにあるCubeを削除し、PrefabをGenerateスクリプトに追加します。

AddCubePrefab

これでスクリプトからPrefabを生成する準備は整いました。

実行してください。

Cubeが生成されました。

応用編

生成したオブジェクトを均等に並べる方法

Hierarchy→UI→Panel

Grid Layout GroupをAdd Componentで追加します。

PanelにImageを追加

ImageをAssetsフォルダにドラックアンドドロップしてImageをPrefab化します。

Generateスクリプトを少し書き換えます。

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

public class Generate : MonoBehaviour
{
public GameObject prefab;//prefabを読み込む
public GameObject panel;//panelを読み込む
void Start()
{
for (int i = 0; i < 10; i++)
{
GameObject child = Instantiate(prefab);//プレファブを生成
child.transform.SetParent(panel.transform);//生成するプレファブはパネルの子オブジェクト
}
}

}

PnaelにGenerateスクリプトを追加

GenerateスクリプトにImagePrefabとPnaelを追加

実行するとImageが生成され、Grid Layout GroupをPanelにAdd Compnentしてるのできれいに並べることができます。

まとめ

今回は、スクリプトからオブジェクトを制せする方法を解説しました。応用で行った生成したUIを均等に並べる方法はよく使うので覚えておくようにしましょう!

コメント

タイトルとURLをコピーしました