キャラクターの持ち物を管理するプログラムをUnityで作る

今回はキャラクターの持ち物の管理方法を考えます。

アイテムを番号で管理し、0だったらナイフの事でitem[0] = true;
等としてアイテムを持っているかどうか判断する事も出来ますが、アイテム数が増えてくると何番が何のアイテムだったか、わからなくなってきます。

多元配列にしてitem[アイテム名][持っているか持っていないか]
とする事も出来ます。

スポンサーリンク

持ち物管理をする為に列挙型を使う

しかし、もっと簡単な方法もあります。
それは、列挙型を使う方法です。
列挙型は

と宣言します。上から順番に0,1,2と対応していきます。

例えば

public var ItemFlag : boolean[];

というインスペクタでOn、Offを指定できるアイテムフラグを作成します。

アイテム1

Knifeが0番目に対応するので、ナイフを取得した場合は

ItemFlag[Item.Knife] = true;

とします。こうすれば0番目と指定しなくて済むので視覚的に何を取得したのかわかりやすくなります。

アイテムを取得する場合、同じようなUIを使うと思いますが、そのUIを全部同じにして、public変数でアイテムの名前を指定し、アイテムを取得する処理のところで、

等とすればアイテム取得のスクリプトを量産する必要もなくなるので便利かもしれません。

また他のスクリプトから特定のアイテムを持っているか?という情報がほしい場合も

というゲッター関数を用意しておき、呼び出し側で

と記述すれば、ナイフを持っているかどうかの情報を得る事が出来ます。

これでキャラクターの持ち物の管理が楽になるはずです。
小さな事ですが、視覚的にわかりやすいというのは非常に重要かもしれません。
ナイフを取ったはずが懐中電灯だったという単純なバグの発生を防ぐ事が出来ます。

ステータス画面でUIを使って持ち物を管理する方法がやりたいんですが、今のところ出来ていないです。
ちょっとはまってしまっているかもしれません・・・・(+_+)

なんとか出来たのが

Unityでキャラクターの持ち物画面を作成する
Unityのゲームで持ち物画面を作成し、アイテムの情報を見る事が出来るようにします

になります。

参照してみてください。