
ゲームに敵やアイテムをたくさん配置したいけど、一個一個作るなんて木が遠くなるよ~
Prefab機能を使えば、その悩み解決できます!!!
本記事の内容
・UnityのPrefabの説明と、使うべき理由
・Prefabの作り方と使い所
Prefabとはなにか?なぜ使った方がいいのか?
Prefabを使って同じオブジェクトを再利用しよう
ゲームにはたくさんのオブジェクトが登場します。
プレイヤーキャラ、敵キャラクター、アイテム、UIとなるボタン、ステージ・・・。
これらの中には、まったく同じオブジェクトを複数置いたり、共通して使い回せばよいものが多くあります。
例えば、私の作ったこちらのゲームですが、アイテムを購入するボタンが複数あります。


これらのボタンをゲーム内にたくさん配置しなければいけないのですが、これらはいずれも同じ機能(ボタンを押すと、アイテムを購入出来る機能)を持っています。
これらのボタンを1つのPrefabとして共通化しておくことで、ボタンを増やすとなったときに、Prefabを追加することで、イチから作る必要がなくなります。
コピペで作る場合との違い
同じオブジェクトを複数作るなら、コピペ(コピー&ペースト)でいいじゃないか、と思うかもしれません。しかし、コピペは大変危険です。なぜか?
一つを修正すると、全部を修正しないといけなくなるからです!


また、Prefab共通の修正したいこともあると思います。その場合、同じPrefabから作られているとで一斉に修正することが可能になります。
たとえば、これら(勇者?)のオブジェクトに当たり判定(コライダー)を付け忘れていて、まとめて当たり判定を付けるとします。仮にPrefab機能を使わないと、3つすべてに当たり判定付けないといけません。
(当たり判定をつけるには、Colliderコンポーネントを付けます)
そこでPrefabの出番です。Prefab機能を使うと、1つを修正するとすべてに反映することが可能です。
Prefab編集モードを使って当たり判定(ここではBox Collider 2D)をセットします。


Prefabから作られたオブジェクトには、青いボックスマークが付きます。
ゲーム内に存在する同じPrefabから作られたオブジェクトすべてにBoxCollider2Dがつきました。一つの修正で3つのオブジェクトが修正された訳ですね!


Prefab機能のメリットのまとめ
ここまでPrefab機能を使った方が絶対いいよ、という話でした。
【Prefabのメリット】
・同じオブジェクトを使い回すことが出来る
・修正点があった場合に一度に反映することが出来るので修正漏れを防げる
・パフォーマンスの向上(コピペで作るよりもパフォーマンスが良くなります)
では、次に具体的な作り方について解説します。
Prefabの作り方
超簡単!ドラッグアンドドロップするだけ!
まずはPrefabの元となるゲームオブジェクトをシーンに作成しましょう。
ここでサイズや、どんなコンポーネント(当たり判定を付けるならCollider、重力や加速する処理をしたいならRigidBodyなど)が必要になるかを決めましょう。
次に、作成したゲームオブジェクトをPrefabにするためには、ヒエラルキーウィンドウから、プロジェクトウィンドウにドラッグアンドドロップするだけです。とってもシンプルですね!


すると、ドロップした先に青いボックスのアイコンのオブジェクトが作成され、ヒエラルキーウィンドウのアイコンも青くなりました。これがPrefabから作成されている、というサインです。
Prefabを編集する
では次に、作成したPrefabを修正したい場合、どうしたらいいのでしょうか?Prefab編集画面へのアクセス方法は2つあります。
1.Prefabとなっているゲームオブジェクトのインスペクタからアクセス


Prefabから作られたオブジェクトはインスペクタ画面を開くと上部にプレハブという枠が表示されます。
これをダブルクリックすることでPrefabの編集画面に飛ぶことが出来ます。


また、このインスペクタから修正を行い、その下にあるオーバーライド
というボタンを押すと、インスペクタで修正した1オブジェクトの内容が、同じPrefabを持つオブジェクトにも反映されます。
(もとのPrefabを修正したのと同じ扱い)


また、Prefab編集モードを抜けるには、以下の画像の箇所を押すだけです。(ちょっと分かりづらいですね)


2.Prefabを格納しているフォルダでファイルをダブルクリック
対象のファイルをダブルクリックして開くだけです!


Prefabの中にPrefabを作ることも可能
Prefabの中にPrefabを作るということも可能です。たとえば、防具、武器、アクセサリーを装備可能なキャラクターがいたとします。
これらのキャラクターに、以下のようなPrefabの中にPrefabを作っておくと、武器、防具、アクセサリーそれぞれに共通した修正が可能になりますね。そしてそれらを束ねて持っているPlayerというPrefabをもたせます。


こうするととで、Playerが複数作ることも出来ますし、それぞれのPlayerにいろんな武器や防具、アクセサリー忘れずを持たせることが出来ます。そして、武器、防具、アクセサリーそれぞれへの修正が可能です。
Prefab機能の使い所まとめ
同じオブジェクトを使い回すケース例をまとめてみました。これ以外でも共通的に作成しなければいけないものに対して非常に有用です。ぜひ使ってみましょう!
- 複数のシーンで同じ機能を持っているプレイヤーキャラクター
- 同じ種類で複数登場する敵のオブジェクト
- 同じ機能だが複数画面に存在するUI(特にアイテムやインベントリのボタンなど)
- フィールドに落ちているアイテム
- ステータスだけが違う武器
まとめ
この記事ではPrefabの使い所、作り方について解説しました。Unityでゲームを作るならほぼ必須の機能です。
そして、ゲームの設計(作り始める前段階)をするときに、どのオブジェクトが共通化可能なのか、つまりどれをPrefabに出来るのか、を考えてみてから実際に作業を進めることをオススメします。
できるだけ面倒な作業や重複した作業を減らして効率的に進めていきましょう!
コメント