読者です 読者をやめる 読者になる 読者になる

スマゲ

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

PlayerPrefsのデータを検索、編集できるエディタ拡張

前回特定のPlayerPrefsの値を見ることができるエディタ拡張 - スマゲでPlayerPrefsに保存されているデータを検索できるようにしました

今度はその検索したデータを編集できるようにしたいとおもいます

検索するコードはすでにあるのでデータが見つかった時の処理を追加します

if(PlayerPrefs.HasKey(stringKey)){
    string data = PlayerPrefs.GetString(stringKey);
    GUILayout.Label(data);
    if(GUILayout.Button("Edit")){
        DataEditor.dataType = "string";
        DataEditor.dataKey = stringKey;
        DataEditor.originalData = data;
        EditorWindow.GetWindow<DataEditor>("DataEditor");
    }
}

すると以下のようになります

f:id:sanukin39:20150120215538p:plain

データが見つかった場合にそのデータの中身とEditボタンがでます

次はデータを編集するためのDataEditor.csをAssets/Editor以下に作成し以下のように書きます

using UnityEditor;
using UnityEngine;

public class DataEditor : EditorWindow {

    public static string dataType;
    public static string dataKey;
    public static string originalData = "";

    void OnGUI(){
        GUILayout.Label(string.Format("Edit Data Of {0}", dataKey));
        originalData = GUILayout.TextField( originalData );
        if(GUILayout.Button("Save")){
            Save (originalData);
        }
    }

    void Save(string data){
        switch(dataType){
        case "string":
            PlayerPrefs.SetString(dataKey, data);
            break;
        case "int":
            PlayerPrefs.SetInt(dataKey, int.Parse(data));
            break;
        case "float":
            PlayerPrefs.SetFloat(dataKey, float.Parse(data));
            break;
        default:
            break;
        }
        PlayerPrefs.Save();
    }
}

編集用の画面が出来てデータを編集、保存することが出来ました。

f:id:sanukin39:20150120220221p:plain

まとめ
まだちょっと使い勝手が悪かったり、コードが汚かったりするのであとで直します


sanukin39/unity-player-prefs-editor · GitHub