0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UE5】保存日時、スクリーンショットを表示したセーブデータのリストを作成する方法

Posted at

この記事を読むと

以下の画像のようにセーブデータをリスト表示できる。
savedatalist.png

はじめに

通称「極め本」完了後に躓いたので記録。
ウィジェット上のボタンを押してセーブデータを読み書きするよう実装したが、そのままではロードするまで中身の情報がわかりづらかった。そこで、セーブされた日時とその時のゲーム内情報、スクリーンショットを表示するようにした。
UEのバージョンは5.5.0

前提知識・技能

セーブデータの読み書き
List Viewの使用

大まかな手順

  1. 画像と文字を配置したボタンのリストをListViewで作成し、ボタンを押すとセーブできるようにする
  2. SaveGameクラスを継承するオブジェクトを作成し、ボタン上に表示する情報を変数に追加する
  3. ゲームデータ保存時にスクリーンショットを撮影し、古いものと差し替える
  4. ゲームデータ保存時に手順2で作成したオブジェクトについてもセーブする
  5. ListViewを開くときに手順2で作成したオブジェクトをロードし、情報を読み出し表示する

詳細

  • 画像と文字を配置したボタンのリストをListViewで作成し、ボタンを押すとセーブできるようにする

今回はListViewに子ウィジェットを追加し、子ウィジェットのボタンを押した際にセーブするイベントを実装した。
子ウィジェットに表示する情報は3種で、ボタン左部にスクリーンショット、ボタン上部にセーブ時の現実の日時、その下にゲーム内の日時を表示する。
savedataitem.png

  • SaveGameクラスを継承するオブジェクトを作成し、ボタン上に表示する情報を変数に追加する

セーブデータを保存するクラスとは別にSaveGameクラスを継承するクラスSaveDataPreviewを作成し、保存時のスクリーンショット、日時、ゲーム内での日時を格納する変数を作成した。

  • ゲームデータ保存時にスクリーンショットを撮影し、古いものと差し替える

コンソールコマンドShotにオプション変数でファイル名を指定してスクリーンショットを保存したところ、ファイル名には拡張子の前に5桁の通し番号が追加されており、上書き保存はできなかった。
ブループリントでファイル操作はできないため、ファイルを削除するC++の関数Delete Fileを作成し、スクリーンショット保存前に古いファイルを削除するようにした。
詳しくは別記事を参照。

  • ゲームデータ保存時に手順2で作成したオブジェクトについてもセーブする

以下のようなイベントをセーブデータ保存時に実行するようにした。
saveprev.png
以下グラフ各箇所の解説。
見切れているSlot to File Name及びAddノードの引数は両方ともセーブデータのスロット(1~3)である。
今回は3スロットのセーブデータを保持するためスロット名「1」「2」「3」を使用済みなので、スロット名にはそれぞれに10を加算した「11」「12」「13」を使用した。
Get Date And Time in Gameノードはウィジェット上に表示したいゲーム内情報を取得するためのもの。
Now関数で現在の日時(日本標準時)を取得できる。
Slot to File Name関数はセーブデータのスロット別にスクリーンショット実行用のコマンドとファイル名を出力する。
Delete Fie関数はC++で作成したもので、差し替えたいファイルを削除する。
Execute Console Command関数はスクリーンショット用のコンソールコマンドshotを実行する。オプション引数としてファイル名を指定している。

  • ListViewを開くときに手順2で作成したオブジェクトをロードし、情報を読み出し表示する

リストへのアイテムの追加と同時にロードして情報を表示するよう以下のようにノードを組んだ。
それぞれListViewを配置したウィジェット、その子ウィジェットにイベントを作成した。
createitem.png
savelist.png
Import File as Texture 2D関数は引数にファイル名を指定すると画像を読み込んでTexture2Dクラスで出力してくれる。それをSet Brush from Texture関数で表示している。

結果

セーブデータの中身がわかりやすくなる!!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?