ここではUnityのシンボル機能、プレファブの使い方を学びます プレファブを利用すると、プロジェクトウィンドウに配置している元の素材を利用して、ステージ上に自由にいくつでもオブジェクトを生成できるようになります。
元となるオブジェクトを作成しよう
まずはプレファブの元となる3Dオブジェクトを作成します。
- ヒエラルキーウィンドウから、
Create > 3D Object > Sphere
で球体を作成しましょう - 座標をリセットしておきたいので、
インスペクタウィンドウ > Transform > ギアアイコン > Reset
を実行しましょう - プログラムで動的に生成した後、衝突させたり物理的な動きを加えたいので
RigidBody
を追加しましょう
オブジェクトをプレファブに変換しよう
次に作成したオブジェクトをプレファブに変更します。
オブジェクトをプレファブに変更するには、ヒエラルキーウィンドウ上のSphere
オブジェクトを、プロジェクトウィンドウ上にドラッグする事でプレファブ化する事ができるようになっています。
プレファブに変更した要素は
- インスペクタウィンドウ上に表示されているアイコンが水色になっている
- ヒエラルキーウィンドウ上に表示されている名前が水色になっている
など、Unityエディタの表示上でプレファブである事が確認できるようになっているので、覚えておきましょう。
作成したプレファブは /Assets/Prefab
以下に入れておきましょう。
プレファブを作成し、スクリプトを書き加えると、ヒエラルキーウィンドウやプロジェクトウィンドウが煩雑になってきます。毎回綺麗に整理するようにこころがけましょう。
プレファブを登場させるスクリプトを作成しよう
次に先ほど作成したプレファブを生成するスクリプトを書いていきましょう。
- プロジェクトウィンドウから、
Create > C# Script
でスクリプトを作成しSpawner
と名前をつけます - 中身には下記のプログラムを書いておきます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
//外部からオリジナルのプレファブを登録できるようにする
public GameObject original;
void Update()
{
//スペースキーを押している場合には プレファブを複製する
if (Input.GetKey(KeyCode.Space))
{
// transformの位置にoriginalを複製する
Instantiate(original, transform.position, Quaternion.identity);
}
}
}
プレファブを登場させるゲームオブジェクトを作成しよう
最後にステージ上にプレファブを登場させるゲームオブジェクトを作成します。
まず、スクリプトを動かす為の空のゲームオブジェクトを作成します。 下記の3つの方法で作成する事ができるようになっています。
- メインメニューから、
GameObject > Create Empty
- ヒエラルキーウィンドウから、
Create > Create Empty
- ヒエラルキーウィンドウで Cmd Shift N
また、作成したゲームオブジェクトですが、
- 名前を
GameObject
から、Spawner
と変更しておきましょう - 座標をリセットしておきたいので、
インスペクタウィンドウ > Transform > ギアアイコン > Reset
を実行しましょう
次に今作成したゲームオブジェクトに先ほど作成したスクリプトをアタッチします。
最後に、インスペクタウィンドウ上のスクリプトに表示されている値、Original
に生成するプレファブを登録します。
プロジェクトウィンドウのプレファブSphere
を、インスペクタウィンドウにドラッグドロップして登録ができます。
再生してみよう!
再生する前に、現在ステージ上に配置されているオリジナルのSphere
は必要が無いので削除しておきましょう。
- Cmnd Pでプロジェクトを再生し、
Spece
キーを押すとプレファブが大量に生成されます。
- Cubeのプレファブを作成してみよう
- プレファブのマテリアルやPhysicマテリアルを変更してみよう
- 地面を作成しよう
- 画面外に飛び去ったオブジェクトを削除してみよう
- 0.5秒ごとに1つ生成されるようにしてみよう
- 生成したオブジェクトに力を加えてみよう