はじめてのUnity 【第5回 Unityのゲームシーン構築② プレハブ】
はじめてのUnity 【第5回 Unityのゲームシーン構築② プレハブ】
ゲームシーンの構築② プレハブ
前回に引き続き、ゲームシーン構築の流れについて紹介していきます。
今回はプレハブという機能についてです。
プレハブ(Prefabs)
プレハブとはアセットの一種で、再利用可能なゲームオブジェクトとしてプロジェクトビューに保存されます。
プレハブは汎用化されているため、プロジェクトビューからゲームシーンにドラッグ&ドロップ(インスタンス化)して何個でも配置できます。
またインスタンスは、プレハブとリンクしているため、プレハブに変更を加えると、インスタンスにも反映されます。
プレハブ化は同じゲームオブジェクトをたくさん配置したいときに大変便利な機能です。
もし、プレハブ化せずに複製して配置してしまうと、複製したオブジェクトで変更を加えたいときに、すべてのオブジェクトに変更を加える必要があり、たいへん手間がかかってしまいます。
プレハブの作成
プレハブの作成は、シーンで作成したゲームオブジェクトをプロジェクトビューにドラッグ&ドロップします。
ゲームオブジェクトおよび入れ子になってる子オブジェクトも含め全て、プレハブデータとして複製されます。
また、オリジナルのゲームオブジェクトはインスタンスとなります。
プレハブインスタンスの作成
シーン中へのインスタンスの作成、追加は、プレハブをプロジェクトビューからシーンビューもしくは階層ビューにドラッグ&ドロップします。
作成、追加したインスタンスはソースのプレハブとリンクしていて、階層ビューには青色テキストで表示されます。
- インスタンスのインスペクタでSelectを押すと、ソースプレハブを選択できます。
継承
継承とは、ソースプレハブのステータスが変更されたとき、その変更がリンクされたゲームオブジェクトに適用されることです。
例えば、新しいコンポーネントをプレハブに追加した場合、すべてのリンクされたゲームオブジェクトにもコンポーネントが追加されます。
オーバーライド
リンクを維持しながら特定のインスタンスの任意のプロパティだけを変更することも可能です。
インスタンスの任意のプロパティを変更(オーバーライド)すると、変更したプロパティだけ太文字で表示されます。
オーバーライドしたプロパティは、プレハブの変更を反映しません。
オーバーライドを有効化していない、リンクされたゲームオブジェクト
オーバーライドを有効化した(太字箇所)、リンクされたゲームオブジェクト
- インスタンスのインスペクタでRevertを押すと、オーバーライドを破棄してソースプレハブと再同期します。
- インスタンスのインスペクタでApplyを押すと、オーバーライドをソースプレハブと全インスタンスに反映します。
このようにしてインスタンスのリンクを壊すことなく、プレハブから独立させて編集することができます。
プレハブのインポート
アセット(Asset)をアセットフォルダに配置すると、Unityは自動的にファイルをインポートして、プレハブのようなものを生成しますが、
実際にはプレハブのように動作するアセットファイルそのものです。
アセットはシーン上でゲームオブジェクトとしてインスタンス化され、通常のプレハブのかわりにソースアセットにリンクされます。
アセットのゲームオブジェクトにも、コンポーネントを追加したりできますが、アセットファイル自身に変更を反映させることはできません。
プレハブのように汎用化したい場合には、アセットインスタンスをプレハブに格納する必要があります。
- アセットをインスタンス化した場合、インスペクタのApplyボタンはEditボタンに変わります。
まとめ
今回はプレハブ化について紹介しました。
大規模なゲームシーンになるほど、大量のゲームオブジェクトを編集することになります。
効率よく編集作業を行うためにもプレハブ化を使いこなすことは大変重要です。
最後までお読みいただきありがとうございます。
← Unityの記事一覧にもどる
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発