GameInstanceが機能していない?

GameInstanceが一部機能していません。例えば、装備した武器はレベルを超えても保存されていますが、イベントリ内のアイテムや武器はレベルを跨ぐと消えてしまいます。UE4.9の状態ではできていたと思うのですが…4.11にしたからでしょうか?ちなみに、プロジェクト設定でGameInstanceを設定済みです。すいませんが、何故か画像が表示できないです。後ほど画像を追加します。わかりにくい部分がありましたら、ご指摘お願いします。

可能性として考えられるのは、レベルを移動する直前に値を一度インスタンスに持たせると思いますが、その処理が終わる前にマップ移動が始まってしまっているとか。

あとはインベントリ内にActorのリファレンス自体を保存したりしてないかとか。その場合はレベル移動の際に消えると思います。

御回答ありがとうございます。上の画像はレベル移動の前に(アイテムを取得した際)行われています。無知ですいませんが、「Actorのリファレンス自体を保存」とはGameInstance内に作った変数に保存されているかと、いうことでしょうか?ちなみに、レベル移動前はイベントリにアイテムがあるので、「アイテムを取得する処理」自体には問題はないと思います。

画像追加しました。アイテムを取得した際の処理です。

細かい仕様が分からないので画像を見る限り、断言出来ませんが問題無さそうです

ぱっと思いつく範囲で気になる点を何点か…

  1. 「レベル移動の前に(アイテムを取得した際)」というとアイテム取得時にレベル移動も起きるってことでしょうか?
  2. インベントリ自体はどこで持っていますか(インスタンスがそれを担っている?)
  3. 今回の不具合はどのタイミングから発生しますか?(ある程度レベル移動を繰り返したあととか)
  4. レベル移動後にキャラクターのインベントリに再度インスタンスから戻すと思いますがそこの処理がおかしい場合もあるかもしれません。

あと、これはインベントリの仕様が分からないとなんとも言えないですが、Addしていく形になっているので、画像の処理がレベル移動前の一時保存のためならば、レベル移動の度に配列が長くなっていって良くないように見えることでしょうか…?

最後に、今作ってらっしゃるゲームのプロジェクトを公開するのは無理だと思いますが、再現できるプロジェクトが作れるならお願いします。


Actorのリファレンスについてです。画像の範囲では大丈夫そうだったので余談です。

Actorとかの変数を宣言する時にリファレンスっていうのを選べると思いますがそれのことです、

これはレベル上にあるActorの住所を保存してるっていうふうな捉え方でいいです。

ですのでこの変数に保存しても実体が保存されるわけではないので、レベルを移動してしまうとGameInstanceであろうと見つからないわけです。

返答ありがとうございます。原因が判明しました。レベルBPのBeginPlayにて、SaveGame内のデータを読み込んでいたためでした。SaveGameの読み込みを制御することで、解決しました。リファレンスの解説もして下さり、ありがとうございます。