さくっと解説!Instantiateメソッドの説明、具体的な使い方を紹介【Unity】

  • Instantiateメソッドってそもそもなに?
  • Instantiateの使い方を知りたい!

という悩みを解決します。

まずInstantiateを使えば、オブジェクトを生成してくれるメソッドです。

では見ていきましょう。

目次

Instantiateはオブジェクトを生成してくれるメソッド

Instantiateを使うことでオブジェクトを生成することができます。とりあえずこのような認識で大丈夫です。

例えば「定期的に矢が落ちてくるようにする」ようなとき。このときにInstantiateを使えば、定期的に矢を落とすことができます。

他にも「プレイヤーと接触したときに障害物を生成する」や「爆弾を定期的に落とす」など、オブジェクトを生成することだったらInstantiateメソッドが使われます。

Instantiateの使い方

スクリプト

public GameObject obj;

このようにして生成すオブジェクトは取得済みであることが前提です。

Transformの値はそのままで生成

Instantiate(obj)

これでTransformの値はそのままでオブジェクトを生成できます。

Transformの値は変えて生成

Instantiate(obj, new Vector3(1.0f, 1.0f, 0.0f), Quaternion.identity);

Vector3の値を変更することで、生成したい場所にオブジェクトを生成することができます。「Quaternion.identity」は回転させないことを示しています。

Instantiate(obj) Transformの値をそのままで生成
Instantiate(生成するオブジェクト, 位置, 回転) オブジェクトを指定された位置、回転で生成する

Instantiateメソッドを実際に1から使う

Instantiateを使って立方体を生成していきます。Instantiateメソッドを使ってみたい人は、一緒にやってみてくださいませ。

プロジェクトを作成

プロジェクトを作成

3D用のプロジェクトを作成してください。

レイアウトは【2 by 3】です。見にくい方は【Unity】効率アップ!レイアウト(Layout)を変更してできる5個の開発画面で【2 by 3】に変更してください

プログラム実行用の空のオブジェクトを作成する

プログラム実行用の空のオブジェクトを作成する

【Hierarchy】→【Create】→【Create Empty】→【Rename】→【GameManager】

別に空のオブジェクトである必要はないのですが、わかりやすいように空のオブジェクトを使っていきます。名前は【GameManager】にします。

比較対象の立方体を作成する

比較対象の立方体を作成する

【Hierarchy】→【Create】→【Cube】

今回はInstantiateメソッドを使って立方体を生成していきますが、比較対象があったほうがわかりやすいです。その比較対象のための立方体を作成しています。

名前はCubeのままで構いません。

位置を調整する

位置を調整する

位置を調整する

【Cube選択】→【Inspector】→【Transformの値を上のようにする】

Cubeを作成した時点で上のような値になっている場合がほとんどです。もし違ったら、変更してください。

スクリプトを作成する

スクリプトを作成する

【Projectウィンドウ】→【Create】→【C#Script】→【名前はCubeGenerator

名前は「CubeGenerator」にしました。ではそのスクリプトをダブルクリックして、開いていきましょう。

スクリプトを記述

ここにボックスタイトルを入力

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

public class CubeGenerator : MonoBehaviour {

    public GameObject target;

    // Use this for initialization
void Start () {
        Instantiate(target, new Vector3(1.0f, 1.0f, 0.0f), Quaternion.identity);

    }

    // Update is called once per frame
void Update () {

    }
}

Instantiate(生成するオブジェクト, 位置, 回転) オブジェクトを指定された位置、回転で生成する

 Instantiate(target, new Vector3(1.0f, 1.0f, 0.0f), Quaternion.identity);

第一引数で生成するオブジェクトを指定してます。ここではtargetを指定しています。targetの中身をあとでいれます。

第二引数で生成するオブジェクトの位置を指定してます。

第三引数では生成するオブジェクトの回転を指定することができます。「Quaternion.identity」は回転させないことを示しています。

スクリプトを「GameManager」にアタッチする

スクリプトを作成する

【CubeGeneratorをGameManagerにドラッグ&ドロップする】

スクリプト単体のまま、オブジェクト単体のままは意味がありません。スクリプトをオブジェクトにアタッチすることで、スクリプトの内容を実行できます。

アウトレット接続する

アウトレット接続する

【GameManager選択】→【Cubeをtargetにドラッグ&ドロップ】

スクリプトを書くところで「target」という変数を宣言しました。その「target」の中で生成したいオブジェクトを入れます。

実行してみる

ゲームを実行する

ゲーム実行ボタンを押して実行すると、こうなります。X:1,Y:1,Z=0の部分にオブジェクトができています。

まとめ

Instantiate(obj) Transformの値をそのままで生成
Instantiate(生成するオブジェクト, 位置, 回転) オブジェクトを指定された位置、回転で生成する

以上、Instantiateメソッドの説明と使い方です。

さぎのみや(@saginomiya8)でした。

あわせて読みたい
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】 ▼この記事を先に見ておきましょう▼ https://miyagame.net/basis-cs/ 当サイトではUnityでのサンプルゲームを作成することができます。Unityでゲームを作っていきましょ...
Instantiateメソッドの説明

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次