[Unity]簡単なデータの保存

2023年10月14日

ハイスコアなどの単純な変数を保存したい場合、ファイル操作などの複雑な手順なしにデータを保存できます

シーンの構成

現在のシーンに追加してみましょう

コード

プログラムを実行、保存作業した後、実行停止して再実行してみましょう
読み出した時、保存した値が表示されるのを確認しましょう

using UnityEngine;

public class DataSaveLoad : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.S))
        {
            PlayerPrefs.SetInt("PlayerHp", 10);
            PlayerPrefs.Save();
        }

        if (Input.GetKeyDown(KeyCode.L))
        {
            int hp = PlayerPrefs.GetInt("PlayerHp");

            Debug.Log(hp);
        }
    }
}

コード説明

キーに対応する値のセット

PlayerHpというキーで整数10をセットします

PlayerPrefs.SetInt("PlayerHp", 10);

データの保存

セットしたデータを保存します

PlayerPrefs.Save();

読み出し

PlayerHpというキーのデータを取得します

int hp = PlayerPrefs.GetInt("PlayerHp");

その他のメソッド

PlayerPrefsの説明

`PlayerPrefs`は、ゲームセッション間でプレイヤー設定を保存するクラスです。文字列、浮動小数点数、整数値をユーザーのプラットフォームレジストリに格納できます。

Unityは、アプリケーションが実行するオペレーティングシステムに基づいて、`PlayerPrefs`データを異なる方法で保存します。このページで指定されたファイルパスでは、会社名と製品名はUnityのプレイヤー設定で設定した名前です。

スタンドアロンプレーヤーのストレージ場所

macOSでは、PlayerPrefsは~/Library/Preferences/com.ExampleCompanyName.ExampleProductName.plistに保存されます。Unityは、エディタとスタンドアロンプレイヤーのプロジェクトに同じ.plistファイルを使用します。

Windowsでは、PlayerPrefsはHKCU\Software\ExampleCompanyName\ExampleProductNameキーに保存されます。

Linuxでは、PlayerPrefsは~/.config/unity3d/ExampleCompanyName/ExampleProductNameに保存されます。

Windowsストアアプリでは、PlayerPrefsは%userprofile%\AppData\Local\Packages\[ProductPackageId]\LocalState\playerprefs.datに保存されます。

Windows Phone 8では、UnityはPlayerPrefsデータをアプリケーションのローカルフォルダに保存します。詳細については、Directory.localFolderを参照してください。

Androidでは、PlayerPrefsは/data/data/pkg-name/shared_prefs/pkg-name.v2.playerprefs.xmlに保存されます。Unityは、PlayerPrefsのデータをSharedPreferencesにデバイスに保存します。C#、JavaScript、Android Java、ネイティブコードはすべてPlayerPrefsデータにアクセスできます。

WebGLでは、UnityはブラウザのIndexedDB APIを使用して最大1MBのPlayerPrefsデータを保存します。詳細については、IndexedDBを参照してください。

エディタ内再生モードのストレージの場所

macOSでは、PlayerPrefsは/Library/Preferences/[bundle identifier].plistに保存されます。

Windowsでは、PlayerPrefsはHKCU\Software\Unity\UnityEditor\ExampleCompanyName\ExampleProductNameキーに保存されます。Windows 10は、アプリケーションのPlayerPrefs名を使用します。たとえば、UnityはDeckBase文字列を追加し、DeckBase_h3232628825に変換します。アプリケーションは拡張機能を無視します。

Unityは、暗号化なしで、PlayerPrefsをローカルレジストリに保存します。PlayerPrefsデータを使用して機密データを保存しないでください。

静的メソッド

DeleteAll環境設定からすべてのキーと値を削除します。注意して使用してください。
DeleteKey指定されたキーをPlayerPrefsから削除します。キーが存在しない場合、DeleteKeyは影響しません。
GetFloat存在する場合は、環境設定ファイルのキーに対応する値を返します。
GetInt存在する場合は、環境設定ファイルのキーに対応する値を返します。
GetString存在する場合は、環境設定ファイルのキーに対応する値を返します。
HasKey指定されたキーがPlayerPrefsに存在する場合はtrueを返し、そうでない場合はfalseを返します。
Save変更されたすべての設定をディスクに書き込みます。
SetFloat指定されたキーで識別される環境設定の浮動小数点数を設定します。PlayerPrefs.GetFloatを使用して、この値を取得できます。
SetInt指定されたキーで識別される環境設定の単一の整数値を設定します。PlayerPrefs.GetIntを使用して、この値を取得できます。
SetString指定されたキーで識別される環境設定の単一の文字列値を設定します。PlayerPrefs.GetStringを使用して、この値を取得できます。

保存場所の確認手順

デバッグ時にエディターからすべてのPlayerPrefsデータを消す方法

Editメニューから削除することができます
テストした時に一度消してやり直したい時などに使います

Unity

Posted by hidepon