UnityのPrefab
UnityのPrefabはオブジェクト何回も使用できるようにする仕組みで、Prefabの仕組みを使うのにいくつかポイントが存在するのでメモしておきます。
- hierarkhyからオブジェクトをPrefabsフォルダにドラッグ&ドロップ
- publicなゲームオブジェクトを実装し。Instantiateメソッドでインスタンスを生成する
- ScriptにPrefabを割り当てる。
hierarkhyからオブジェクトをPrefabsフォルダにドラッグ&ドロップ
まずはUnityのprojectにPrefabsフォルダをつくっておきhierarkhyからドラッグ&ドロップしてきます。hierarkhyからドラッグ&ドロップが完了するとhierarkhyにあるオブジェクトは青い文字に変化します。
publicなゲームオブジェクトを実装し。Instantiateメソッドでインスタンスを生成する
C#のコードで実装していくのですが、publicなゲームオブジェクトを実装するのがポイントで、publicな変数を用意するとそれがUnityのUIに反映されるという仕組みになっています。
はじめてだとかなりわかりにくい仕様ですがやればわかります。以下はC#のコードです。publicでBulletPrefabというゲームオブジェクトを宣言しているのがポイントです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RocketScript : MonoBehaviour { public GameObject BulletPrefab; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if(Input.GetKey(KeyCode.LeftArrow)){ transform.Translate(-0.1f, 0, 0); } if(Input.GetKey(KeyCode.RightArrow)){ transform.Translate(0.1f, 0, 0); } if(Input.GetKey(KeyCode.Space)){ Instantiate(BulletPrefab, transform.position, Quaternion.identity); } } }
Prefabに関係のあるコードは6行目と21行目から23行目です。Instatiateはインスタンスを生成するためのメソッドで条件分岐はSpaceキーがおされたときという条件になっています。なのでSpaceキーがおされるたびにインスタンス(BulletPrefab)が生成されます。
ScriptにPrefabを割り当てる
Prefabを作っただけではだめで最後にスクリプトにPrefabをアタッチ(割り当て)する必要があります。ここがまさにポイントでさきほどのpublicなゲームオブジェクトを宣言していないとUnityのUIに割り当て箇所の表示すらされません。はじめてだとこの部分が非常にわかりくい部分かと思います。publicなゲームオブジェクトBulletPrefabを宣言したので。RocketScriptにBulletPrefabという項目が表示されます。↓その横にある欄にprefab本体をドラッグ&ドロップします。
UnityのPrefabまとめ
UnityのPrefabを使うにはいくつの手順があり、それはhierarkhyからのドラッグ&ドロップとスクリプトでのpublicなゲームオブジェクトの宣言です。最後にPrefab本体をアタッチします。筆者もはじめてやったときはよくわかりませんでしたが、やってみるとそんなに難しい作業ではないです。
unityはhierarkhyとかinspectorとか聞きなれない言葉がでてきます。はじめはUnityUIの名前から覚えるのがよいのかと思います。hierarkhyとかinspectorがなにかわかっていなければ記事を読んでも理解することができないからです。dotinstallでUnity入門が無料でうけられるのでそれをやるのがよいです。
コメント