4-1FirstPersonShooter⑤のRefreshinventoryのイベントについてなのですが、
下の画像のforeachroopのところでinventoryの情報を取ってくる条件としてlenghtの数のチェックをしているのですが、なぜそうしているのかが良くわかりません。
単純にアイテム欄が満杯でないことの確認であればインベントリの数である5以下でよいような気がするのですが教えていただけますでしょうか。
いい質問ですね。理解することが難しいところだと思います。
RefreshInventoryはアイテムを拾った、捨てた後に呼ばれてアイテムスロットの画像を更新します。
今持っているアイテム個数をチェック(チェックするためInventory配列にLENGTHを使っています)してアイテムデータがあるスロットには指定アイテム画像(拾ったら拾ったアイテムの画像)を設定、アイテムデータがない場合は何もない画像を設定します。
アイテム画像を設定するためにアイテム個数をチェックします。
最初にRefreshInventoryのアクションを作ったのでそれだけで考えいたので理解するのが難しかったですが、
確かにこれがdropアクションやUseアクションの後に呼ばれる処理だと考えると何となく理解できそうです。
上記のアクションの処理後は持っているインベントリの数が変化するのでlengthで現在のインベントリの数確認して、ForEachLoopで各インベントリスロットに対してimageの更新処理を行うという感じでしょうか。
そうですね。インベントリの数を見てアイテムデータがある場合はその画像データを設定、データがない場合は何もない黒い画像で設定する処理になっています。
そうなると、具体的なアクションコマンドでいえば
画像がある場合の処理というのがアイテムを拾ったとき(Eコマンドを押したとき)に、ブランチの条件でtrueに流れる。
逆にUse、Dropコマンドが押されたときにブランチの条件でFalseに流れるという感じでしょうか。
アイテムを拾った場合は拾ったアイテムデータ(具体的にはInventoryStruct構造体)が生成され配列に追加されます。
ForEachLoopで追加されたアイテムスロット番号のIndexを見る時はブランチの条件でtrueに流れます。
逆はアイテムデータが削除されので空データの場合はブランチの条件でFalseに流れます。