スマゲ

スマートなゲームづくりを目指して日々精進

特定のPlayerPrefsの値を見ることができるエディタ拡張

PlayerPrefsでデータを保存して、その値を確認するときはよ Debug.Log を使っていましたが、毎回コードを特定の場所に挿入して見るのも面倒なので、キーを検索してデータが保存されている場合にそれを表示する機能を作りました。

Unityの Assets/Editor以下にPlayrePrefsEditorを作り以下のように書きます

using UnityEditor;
using UnityEngine;

public class PlayerPrefsEditor : EditorWindow {

    string stringKey = "";
    string intKey = "";
    string floatKey = "";

    [MenuItem("Tools/PlayerPrefs/OpenEditor")]
    static void OpenEditor(){
        EditorWindow.GetWindow<PlayerPrefsEditor>("PlayrePrefsEditor");
    }

    void OnGUI(){
        GUILayout.Label( "Input PlayerPrefs Key Here" );
        GUILayout.Label( "String Value" );
        stringKey = GUILayout.TextField( stringKey );
        if(PlayerPrefs.HasKey(stringKey)){
            string data = PlayerPrefs.GetString(stringKey);
            GUILayout.Label(data);
        }

        GUILayout.Label("Int Value");
        intKey = GUILayout.TextField(intKey);
        if(PlayerPrefs.HasKey(intKey)){
            string data = PlayerPrefs.GetInt(intKey).ToString();
            GUILayout.Label(data);
        }

        GUILayout.Label("Float Value");
        floatKey = GUILayout.TextField(floatKey);
        if(PlayerPrefs.HasKey(floatKey)){
            string data = PlayerPrefs.GetFloat(floatKey).ToString();
            GUILayout.Label(data);
        }
    }
}

するとUnityのメニューバーから Tools -> PlayerPrefs -> OpenEditor と選択することができ以下の様な画面が出てきます
f:id:sanukin39:20150119231213p:plain

それぞれのテキストエリアに検索したいデータのキーを入れると下にデータが表示されます

f:id:sanukin39:20150119231617p:plain

エディタで実行中でもウィンドウをアクティブにすればデータが更新されるので好きなタイミングで保存されているデータを見ることが出来ます

まとめ
ほんとうは入力する欄を一つにしたかったけど、HasKeyだけじゃどの型のデータが保存されているかわからないので結局三種類書いてしまった
また、同じ型のデータを一度に二種類見ることが出来ないのでそのようなときに不便
またまだ改善の余地がありそう

以前書いたUnityのエディタ拡張でPlayerPrefsを削除する - スマゲと扱っている範囲が同じなので同じプロジェクトにコミットしておきました


sanukin39/unity-player-prefs-editor · GitHub

2015/01/20追記
PlayerPrefsのデータを検索、編集できるエディタ拡張 - スマゲにてプロジェクトにデータ編集機能を追加しました