【Unity】RPGを作るチュートリアルその29 アイテムの管理クラスを実装
- 2025.02.26
- RPGチュートリアル
- RPG, Unity, ゲーム開発, チュートリアル

シンプルなRPGをUnityで作るチュートリアルシリーズの29回目です。
第28回ではキャラクター全体の状態を管理するクラスを追加しました。
今回は定義データを管理するクラスとして、アイテムデータの管理クラスを追加したいと思います。Addressablesを使ったデータのロード、ID指定によるアイテムデータ取得の機能などを実装していきます。
制作環境
MacBook Pro 2023 Apple M2 Max
Unity6 (6000.0.30f1) Silicon
作業内容と順序
シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。
チュートリアルの一覧
このシリーズ全体の一覧は以下のページにまとめています。
前回の内容
前回はキャラクター全体の状態を管理するクラスを追加しました。
アイテムデータを管理
今回のチュートリアルではアイテムデータの全体数が少ないので、ゲーム開始時にAddressablesでラベルをつけたアイテムデータを一括ロードして、それをstaticなクラスでリストとして保持するようにしたいと思います。
本番運用でアイテムの定義データ数が多くなって、ずっと保持しているとメモリ使用率が大変……という場合は、必要なタイミングでロードするようにするのも良いかと思います。戦闘中は所持アイテムのデータのみロードする、なんて形などです。必要な時に必要なデータがロードされている状態を実現できればOKで、その上でメモリの使用率もチューニングしていけると良いかもしれません。
Addressablesのパッケージを配置する場所も大切で、ローカルの場合はほぼ遅延なくロードできますが、サーバに配置した場合はネットワークを使ってパッケージをダウンロードしてメモリにロードする関係で、その時間に応じた遅延が発生します。そのため、実際にデータを使う時には、ロードの完了を待つことも必要かもしれません。あるいは、アイコンなどロードに時間のかかる部分は後で表示する処理を入れるのもよくあります。
今回のチュートリアルではAddressablesのパッケージは全部ローカルに配置するので、おそらく1フレームでロードは終わるかと思います。
アイテムデータを管理するクラスの実装
Projectウィンドウの「Assets/Scripts」のフォルダにて、空のスクリプトファイルを作成します。名前は [ItemDataManager] にしました。

作成した「ItemDataManager」の中身は以下のように記載しました。
フィールドとしては読み込んだアイテムデータを保持するリストを用意しています。
「LoadItemData()」のメソッドでは「Addressables.LoadAssetsAsync」を使って指定したラベルのアセットをロードしています。ロードは非同期で行われて、awaitの部分で待っています。awaitを使っているので、メソッドの型の前にasyncをつけています。ロードが終わったらフィールドのリストにアイテムデータをセットしています。
このメソッドはゲームの起動処理の中で呼んで、データをロードしておく想定です。
「GetItemDataById()」のメソッドは指定したIDでアイテムデータをロードし、「GetAllData()」のメソッドはロード済みのアイテム全てを返しています。基本的にはIDで指定する「GetItemDataById()」のメソッドを使っていく想定です。
スクリプトを保存してコンパイルエラーがなければ今回は完了です。
今回のブランチ
まとめ
今回はアイテムデータの管理クラスを作成しました。
次回は引き続き定義データの管理クラスとして敵キャラクターの管理クラスを作成していきましょう。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】RPGを作るチュートリアルその28 キャラクター全体の状態の管理 2025.02.26
-
次の記事
【Unity】RPGを作るチュートリアルその30 敵キャラクターのデータの管理クラスを実装 2025.02.26
コメントを書く