LemonteaのUnity部屋

LemonteaのUnity部屋

Unityの使い方とかです~

初めてのUnity(6) プレハブとインスタンス

youtu.be


こんにちは。レモンティーです。
今回も前回↓の続きです。

sawalemounity.hatenablog.com


予告通りCubeの量産を自動でやってみましょう。
それには、プレハブ化とInstantiateをつかいます。

まず、プレハブ化から説明します。

プレハブ化とは、
ざっくり言うと オブジェクトの使い回し機能 です。

Transformやメンバ変数、親子関係など、など、など…
オブジェクトの設定って結構やることが多くて、
別のシーンでも同じ物が使いたい時とか、二つ作るのは面倒ですよね?

そこで使い回し機能!というわけです。

やりかたは簡単。
プレハブ化したいオブジェクトを、Projectにドロップするだけです。

今回はBlockをプレハブ化してみましょう。

プレハブを手動で使う時は、ProjectからHierarchyにドロップすればOKです

youtu.be


↑こんな感じです。

ProjectにBlockのプレハブが作成されましたね。
手動で使うのも問題なくできています。

元のBlockは消しておきましょう。


次に、Instantiateの説明…といきたい所ですが、
詳しくはスクリプトの話なので後でやります。

簡単に言うと、複製です。

今はCreate>C# Script で
「CreateCube」と言う名前のスクリプトを作り、
↓をコピペしましょう。

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

public class CreateCube : MonoBehaviour {
    public GameObject Cube;
    float time = 5;
	void Update () {
        time -= Time.deltaTime;
        if(time <= 0)
        {
            Vector3 Create = new Vector3(Random.Range(-4, 4), 5, Random.Range(-4, 4));
            Instantiate(Cube,Create,Quaternion.identity);
            time = Random.Range(3, 6);
        }
	}
}

さて、こういったステージを制御するようなスクリプト
わかりやすいように空オブジェクトに張っておきます。

Create >3D Object>CreateEmpty
で空のgameobjectを作り、StageManagerとか適当に名付けます。

それにアタッチしておきましょう。

もうひと仕事です。
複製する対象を指定しないとエラーになります。

f:id:sawalemontea:20170802162449p:plain

赤丸のところに、Blockをドロップしましょう。
もしくは、青丸の所をクリックして選択してもOKです。


これで実行すると空から次々にCubeが降ってきます!

ちょっとだけゲーム性がうまれましたね。
今回はここまでです。

次回はこれにゴールをつけて、"あれ"の完成です。

Next

sawalemounity.hatenablog.com

関連
今回使用したスクリプト

sawalemounity.hatenablog.com