【UE5】 UE5 プロジェクト用のGameUserSettingsを用意する

UEにはUGameUserSettingsというものがありそちらには設定に関するものが数値が入っています。

steam対応のゲームで
Saveデータはクラウドで共有したいけど、設定はパソコン毎に持ちたい
という場合や、
設定を変えたらゲームが動かなくなった際に削除して初期値に戻す
という場合に使い分けるということですね。

UGameUserSettingsの公式のドキュメントはこちら
ここにある数値で足りない場合にはプロジェクトごとに用意する必要があります。

そこでハマったポイントをメモしておきます。

1. UGameUserSettingsを継承したクラスを作成

UCLASS()
class GAME_API UMYGameUserSettings : public UGameUserSettings
{
};

2. ProjectSettingから作成したSettingクラスを指定

Engine -> GeneralSettingsのなかにGameUserSettingsClassの項目があるので
そこに1で作成したクラスを指定します。

これで作成したクラスがUEの関数でGetできます。

3.任意のプロパティを追加

UCLASS()
class GAME_API UMYGameUserSettings : public UGameUserSettings
{
    GENERATED_BODY()
public:
    UPROPERTY(Config) float BGMVolume;
    UPROPERTY(Config) float SEVolume;
};

任意のプロパティを追加します。
(上記コードにはないですがコンストラクタで初期化してください)

ここでUPROPERTY(Config)
をつけないと保存されないので注意が必要です。

これで保存ができていると
GameUserSettings.ini
に追加したプロパティが保存されているのがわかると思います
(GameUserSettings.iniは実行環境によって参照するものが異なります)

当然ですがGameUserSettings.iniは暗号化されていないので
ユーザーにみられても良いものだけを保存しましょう