x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

スコアのセーブとセーブしたスコアのロード

自分が獲得したスコアをセーブデータに保存し、そこに保存されたスコアをスコアボードに表示させるようにしたいのですが、セーブデータからスコアの数値が取り出す事が出来ません。 画像1、2枚目の画像が読み込んだセーブデータをスコアとして処理しそれを保存、3枚目が保存されたスコアを取り出しそれをスコアボードに表示させる処理として組みましたが、これだとセーブデータ内の変数のデフォルト値がスコアボードに表示されるだけで動作してくれませんでした。 スコアの処理はそれぞれ1位、2位、3位、ランク外の値の変数がそれぞれセーブデータ用ブループリントに設定してあり、その変数を取り出してスコアの大きさを比較した後INSERTで並べ替え、その数値をセーブデータに上書きする感じです。 どのようにすればセーブデータから数値を取り出せるでしょうか。 alt text alt text alt text

Product Version: UE 4.20
Tags:
2018-11-29.png (573.2 kB)
2018-11-29-1.png (524.0 kB)
2018-11-29-2.png (361.9 kB)
more ▼

asked Nov 29 '18 at 02:40 PM in Japanese

avatar image

ememan0912
26 1 1 4

(comments are locked)
10|2000 characters needed characters left

1 answer: sort voted first

現在、実際に確認する環境が無いため、予想で回答させていただきます。 間違いでしたら、申し訳ありません。

おそらくSaveScoreクラスがSaveGameクラスを継承したもので、そこにスコアデータを管理するようにしていると思いますが、GameOver ウィジェットBPの最後の方(2枚目の画像)で、一連のスコアデータの保存と再配列処理を行った後、Create Game Save Objectノードで新たにSaveScoreクラスのオブジェクトを生成し、これをセーブデータとして保存してしまっているようです。

Create Game Save Objectノードは、指定したSaveGameクラスを継承したクラスのオブジェクトを、新規に生成するノードですので、このノードの返り値をSave Game to Slotノードに渡してしまうと、すべての変数の値がデフォルト値の状態になっているものが、セーブデータとして保存されてしまいます。

1枚目の画像で、SaveScoreクラスにキャストしたオブジェクトが出力される、As Save Score 出力ピンを、2枚目の画像にあるSave Game to Slotノードの、Save Game Object 入力ピンに接続することで、改善するかと思います。 alt text

more ▼

answered Dec 03 '18 at 01:22 AM

avatar image

Mojatto
23 1 2 5

avatar image ememan0912 Dec 04 '18 at 12:15 PM

スコアは正常に表示されるようになりましたが、プレイ中にリトライを行っても前回プレイしたスコアが残りません。これはエディタの仕様でしょうか?パッケージ化を行えばデータは普通に保存されるようになりますか?

avatar image Mojatto Dec 05 '18 at 03:59 AM

PIE等で、エディタ上で実行したゲームでも、セーブデータはユーザ側で初期化などをしない限りは残ります。 a-zaki様がおっしゃられているように、ゲームのリトライ処理をどのように実装されているかは、こちらからは把握できませんが、リトライ時にもセーブデータの作成を行っていませんか?

avatar image ememan0912 Dec 05 '18 at 01:56 PM

リトライは普通に今あるレベルをOpenLevelで開きなおすことで行っています。 ブランチを組んで一度データが保存された場合はブーリアンにチェックを入れ、このチェックが無い場合のみデータを作成するようにしてみたのですが、何故か何度やっても新規でデータを作られてしまいます。 alt text

2018-12-05-1.png (341.3 kB)
avatar image a-zaki Dec 06 '18 at 12:08 AM

Boolean型のSaved変数にTrueをセットしていないのが原因なのかな?と思いました。

添付画像のBPですが、
【ブランチ】 TRUE → [SET GAME OVER] FALSE → [Create Save Game Object] → [Set Save Score] → [SET Saved]※TRUEをセット → [SET GAME OVER]

みたいに、FALSE後に変数Saved(Boolean型)にTRUEをセットしてもなりますか?

avatar image ememan0912 Dec 06 '18 at 03:17 PM

Trueはデータのセーブ後に設定していましたが失敗しました。ブランチにも組んで試してみましたが、やはりなぜかFalseと判断され新規でデータを作ってしまいます。 alt text

2018-12-07-2.png (402.2 kB)
avatar image Mojatto Dec 06 '18 at 05:29 PM

GameMode BP内にフラグを保持させることで、セーブを行ったかどうかを管理されているのですね。 GameMode BPはGameInstanceとは異なり、レベル間移動時に状態が保持されないため、ゲームのリスタートごと(レベルロード時)に初期状態に戻ってしまいます。 そのため、ゲームのリスタート時にSavedフラグがFalseになり、毎ゲーム時に新規にセーブデータが作成されてしまっていると思われます。

この場合、セーブデータが既に存在しているかどうかを、別の方法で判定するように、変更する必要があります。 あくまで私の例ですが、Load Game from Slotノードによって得られるセーブデータのオブジェクトを、IsValidノードを用いて有効であるか否かを判定する方法があります。 Load Game from Slotノードでセーブデータの取得を試行し、セーブデータが既に作成されていて、正しくロードできればIsValid 出力ピンへ、セーブデータが見つからなかったなど、何らかの要因で正しくロードできていなかった場合はIsNotValid 出力ピンへ分岐します。 IsValid 出力ピンにセーブデータオブジェクトを変数に保持する処理、IsNotValid 出力ピン側にセーブデータを新規に作成するなどの処理を構成するように、実装してみてはいかがでしょうか?

alt text

avatar image ememan0912 Dec 07 '18 at 12:52 PM

正常に動作するようになりました。皆様の助言でようやく問題を解決することができました。本当にありがとうございます。

avatar image a-zaki Dec 05 '18 at 12:35 AM

リトライ時の処理をどのように書かれているのかわかりませんが、 リトライ時の処理でも、Create Game Save Objectノードでも新たにSaveScoreクラスのオブジェクトを生成して使用している可能性はありませんか?

(comments are locked)
10|2000 characters needed characters left
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question