前回特定の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"); } }
すると以下のようになります
データが見つかった場合にそのデータの中身と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(); } }
編集用の画面が出来てデータを編集、保存することが出来ました。
まとめ
まだちょっと使い勝手が悪かったり、コードが汚かったりするのであとで直します