リスポーンしたあと取得したアイテムがリセットしてしまいます。

アクターがダメージをもらってデストロイされたら、リスポーンするという処理をしたのですが、拾ったアイテムの数がリセットされ0になります。あらゆる方法を試したつもりなのですが出来ず、教えていただければ幸いです。

こちらが主役のアクターがアイテムに当たったら、100ポイント入るという処理です。


それをウィジットで表示しています。

こちらがリスポーンの処理です。

Create Save Game Object を使ったり、変数をリスポーン時に渡そうと試みたのですが、なかなかうまくいきません。

何卒よろしくお願いいたします。

「セーブゲーム」または「ゲームインスタンス」を使用する必要があります。

コードはほぼ同じになります。

ゲーム インスタンスは、さまざまなプレイヤーとレベルにまたがります。

セーブゲームは再起動時にも機能します。

これが私のセーブゲーム101です

2 Likes

PS: もう 1 つの方法は、プレイヤーで coins 変数を公開し、スポーン中に設定することです。

image

image

2 Likes

ClockworkOceanさんの対応方法でおおむね問題ないですが、少し補足しますと

そのステージ内でのみカウントされれば良い数値であればGameModeに置いておけばOKです

別のマップに移動しても継続したい、ゲーム全体を通して維持したい数値であればGameInstanceに置いておくことになります。

さらに、ゲームを終了して再開しても維持したいというのであればSaveGameに設定することになります。
(この場合は維持というよりロードによる復元ですが)

キャラクターは死亡などで消えるものなので、所持品などはそれ専用のActorやGameInstanceのようなデータが残せる相手に分割管理するのがベストですね。

(主人公Actorと道具袋Actorという感じです)

1 Like

ありがとうございます!真似をしながらなんとかセーブをしようとしたのですが知識不足でうまくいきませんでした。しかし方向性が分かったので、セーブについて勉強しようと思います!

そして変数をインスタンスに書いて、キャストしてアイテムを数えたところ、うまく行きました!とりあえず前に進めるので、これで行こうと思います。

本当にありがとうございました!

1 Like

ありがとうございます!
おっしゃる通り、処理をインスタンスに書いたところうまく行きました!
使い分けが必要なんですね。
本当に助かりました。ありがとうございます!