二代目備忘録スマートフォン用の表示で見る二代目備忘録2019-07-17Unity備忘録42頁目「インベントリを作る」Unity江上宿六です。アイテム関連がそこそこ良い感じになったような気がするので更に踏み込みます。いう事でインベントリを作りたいと思います。ゲームにおいてインベントリとはだいたいプレイヤーの持ち物欄の事を指すことが多いと思いますが、NPCだったり店の販売リストなんかもそういう言い方をしたり、あれ、しなかったかな。いう事でやっていきますが、まずインベントリに何を保持させるかです。そりゃアイテムを保持させるですけどオブジェクトというわけではありませんから。今回のアイテムの本体はSpriteにアタッチされているスクリプトで、この値を保持させるという事です。具体的にどの値を保持すべきかというと、画面に出てくるアイテムの定義を明確にしておく必要があります。現状で言うとアイテム名、アイテムレベル、スタック数の値を持っているものがアイテムとして扱われ、流通します。~そしてこのようにそれらの値を保持出来るクラスを作ってListで宣言しています。ここに値を追加していくことでインベントリ的な機能を実現させようという事です。クラスを[System.Serializable]として、このクラスを[SerializeField]で宣言する事で自作のクラスの値をインスペクターで確認出来るようになるようです。値を追加する関数の一部分です。最後までそれが無ければListのAdd()を使って渡されたアイテムを追加するという風になっています。装備品は無条件で追加されるようにしてます、ルールです。動作を確認するため、ボタンにパキラをインベントリに追加する処理と、ランタンを追加する処理を設定して実行してみます。パキラボタンを押すとパキラが追加されました更に連打するとValueの値がどんどん上がっていきます。ランタンボタンを押すと新たにランタンが追加されました。ランタンは装備品と設定されているのでスタックはされませんでした。だいたい想定通りに動いているのが確認出来ました。あとはキャラの行動に合わせてこれらの処理を行えば良いわけです。アイテムをしまう時にインベントリに追加して情報を持ったSpriteを破棄し、アイテムを取り出す時にその情報を持ったSpriteを生成してインベントリから削除。要素の削除はList.Remove()で行います。要素番号を指定して削除出来るような関数を使うと便利だと思います。インベントリ関係で便利だったり簡単な方法が無いか探してみたんですけどもどれもあまりピンとこなかったので自分で適当に考えてやってみました。それにしてもリストを扱うのが簡単で驚きです。次回もまた未定ですけど、流れでインベントリの表示とかやってみるのも良いかもと思ったりしてます。出来るかは分からないですけど。建物を作ったら次は町並みを考えなければならなかったようだ2019-07-13Unity備忘録40頁目「Terrainで地形作り1」テライン操作は楽しいけど実際に地形を作るセンスが無いのがお...2019-01-11割とブランクがあった模様。»プロフィールid:y6yegami適当に勉強した事を忘れないように書き留めておくブログ。当面はBlender。便りが無いのは良い便り。月別アーカイブはてなブログをはじめよう!y6yegamiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。