1. HOME
  2. ブログ
  3. IT技術
  4. 【Unity】オブジェクトプーリングの実装方法を解説!~弾の作成チュートリアル~
【Unity】オブジェクトプーリングの実装方法を解説!~弾の作成チュートリアル~

【Unity】オブジェクトプーリングの実装方法を解説!~弾の作成チュートリアル~

【Unity】オブジェクトプーリングの実装方法を解説

今回は、Unity を使って、オブジェクトプーリング実装のやり方を解説したいと思います!

解説通りに進めれば、しっかりと動作するものができるはずです。

少し長いですが、一緒に頑張りましょう!

こちらの記事もオススメ!


オブジェクトプーリングとは?

弾を発射するシステムを作るとき、Instantiate や Destroy を使う方は、割といるはず…。

Instantiate や Destroy は、処理が重いので、あまり頻繁に使いたくはありません。

そんなときに、「オブジェクトプーリング」というシステムを使うわけです。

これは、ゲームがスタートした時に弾を作成しておき、必要になったら出現させるシステム。

使い終わったら戻すことで、オブジェクトを使いまわす事ができます。

つまり、動作がとても軽くなるわけですね!

実際にプロジェクトを作り、オブジェクトプーリングのシステムを作ってみましょう!

実際にオブジェクトプーリングを作ってみる

今回は、オブジェクトプーリングを使って「弾を飛ばす」というプロジェクトを作っていきます。

オブジェクトプーリングを作ってみる

2Dオブジェクトの用意

まず最初に、Project ファイルで右クリックをして「Create > Sprites > 」の手順で、「Square」「Circle」 を作ります。

「Create > Sprites > 」の手順で、「Square」

それらを、シーン上にドラッグ&ドロップして、「Player」と「Bullet」と名付けておきます。

Bullet(丸)のサイズを、( X 0.5  Y 0.5)に変更しましょう。

設定後の表示

スクリプトの作成

オブジェクトプーリングを使って、四角形(プレイヤー)から、丸(弾)を飛ばすスクリプトを作成していきましょう。

「Create >  C#Script」で、OPManager.cs を作ってください。

これは、オブジェクトプールのシステムで、コードは以下の通りです。

次に、「Create > C#Script」で、Player.cs を作ってください。

これは、プレイヤーが弾を撃つシステムで、コードは以下の通りです。

次に、「Create > C#Script」で Bullet.cs を作ってください。

これは、弾が飛ぶシステムで、コードは以下の通りです。

オブジェクトにアタッチ

続いて、オブジェクトにスクリプトをアタッチしていきます。

Bullet に Bullet.cs を、Player に Player.cs をアタッチします。

そして、Bullet をプロジェクトファイルに、ドラッグ&ドロップしてプレハブ化します。

オブジェクトにアタッチ

次に、Hierarchy 上で、空のオブジェクトを作成します。(CreateEmpty)

名前を「OPManager」に変更しておきましょう。

新しく、OPManager という Tag を作り、それを設定します。

OPManager に、さっき作った Bullet をアタッチします。

以下の画像のようになっていたら OK です。

OPManager に、さっき作った Bullet をアタッチ

動作の確認をしてみよう!

これで完成です!

実行してみましょう!

実行画面
実行後の表示

画面のクリックした方向に、弾が飛んでいきます。

OPManager の子オブジェクトに、Bullet が作成されていますね。

アクティブになったり、非アクティブになったりしています。

SetActive を使って、必要になったら出現させ、使い終わったら戻しています

オブジェクトを使いまわす事ができていますね!

オブジェクトプーリングのシステムの解説まとめ

オブジェクトプーリングのシステムの内容を、ざっくりまとめて解説しておきます。

OPManager.cs が、オブジェクトプーリングのコアです。

リスト(List)という配列を使って、アクティブと非アクティブなオブジェクトを分けています。

発射などの呼び出しがあれば、指定した位置から、オブジェクトがアクティブになります。

これは、Player.cs の以下の行で呼び出しています。

また、弾など(プールされるオブジェクト)は、アクティブになってからスクリプトが実行されています。

今回のコードの Bullet.cs では、OnUpdate の中がアクティブの時のみ実行されます。

さいごに

今回は、オブジェクトプーリング実装のやり方を解説してきました。

オブジェクトプーリングのシステムは、ざっくりとでも理解できたでしょうか?

100%理解するのは難しいので、基本を押さえて、応用できれば十分だと思います。

ぜひ、応用にも挑戦してみてくださいね!

記事を書いた人

\ FPS好きなエンジニア集団 /
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
システム・アプリ開発依頼・お見積もりはこちらまでお願いします。
また、WEB・スマホ系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!


書いた人はこんな人

ライトコード社員ブログ
ライトコード社員ブログ
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡本社、東京オフィスの2拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア