自分が獲得したスコアをランキングに入れ込む処理を作りたいのですが、うまくいきません。
獲得スコア(TotalScore)とそれまで記録された1位から3位(1st~3rdScore)とランキング外(OutsideOfRank)を比較し、例えば自分のスコアが2位以上1位以下だった場合は自分のスコアをランキングの2位に入れ1位はそのまま、2位のスコアを3位に、3位のスコアはランク外の変数に入れ込み削除するようにします。また、それぞれのスコアはゲームを終了しても保持されるようにしたいです。
様々な情報を元に自力でノードを組んでみたのですが、うまく変数を入れ替えてくれませんでした。
どこを修正すれば正常に動くでしょうか。1番目がゲームオーバー時にデータをSaveScoreブループリントに保存する処理、2番目がウィジェットブループリントでランキングを表示させるための物です。
ブループリントへの保存はhttp://api.unrealengine.com/JPN/Gameplay/SaveGame/Blueprints/index.htmlを参考にしました。
こんにちは。 質問です。
- 「うまく変数を入れ替えてくれません」はどんな状況で起こりますか?(獲得スコアが1位,2位,3位,ランキング外のすべてで発生しますか。それともいずれかのときか)
- 2枚目のブループリントで、「TotalScore >= 2ndScore」「TotalScore >= 3rdScore」の直後の「SET 2nd Score」「SET 3rd Score」にピンが刺さっていないのは仕様ですか?
これは老婆心からですが、ワイヤーが多くなると視認性が悪くなるので、一時的に変数に入れると見やすくなるかもしれません。
添付画像は2枚目上段を、配列変数を用いて書き直したものです。
(私も初学者なので、よりよい書き方があると思います。またもしも間違っていたら申し訳ありません)
INSERTはこちらを参考にしました。
http://api.unrealengine.com/JPN/Engine/Blueprints/UserGuide/Arrays/ArrayNodes/
配列の使用方法はこちらがわかりやすいかと思います。
2については私のミスです。ワイヤが多すぎて見落としていたので貼っていただいた配列変数に置き換えました。
1についてですが、すべてにおいてScore変数のデフォルト値である0しか表示されないという状況です。獲得したスコアはどこの変数も置き換えてくれません。
ウィジェットへの表示はLoadGameFromSlotから行っています。ゲームオーバー時にランキングを入れ替え、それをSaveScoreブループリントに保存し、その保存されたスコアからウィジェットに表示させようとしています。
ThirdPersonGameModeからTotalScore(獲得したスコア)の受け渡しがうまくいっていないのかもしれません。
直接的な回答ができず申し訳ないのですが、
PrintStringでそのときそのときのTotalScoreの値を確認し、
- TotalScoreに値が入っているか(デフォルト値の0のままならTotalScoreの値をSETする箇所を確認する)
を確認すると解決の糸口が見つかるかもしれません。
スコアの受け渡し自体は上手くいっているので、どうやらセーブしたデータから数値を取り出すのが上手くいっていないみたいです。セーブデータからの数値取り出しは質問の趣旨が変わってくるので新しい質問としてまた投稿し直します。