Prefs一々呼び出して消すのも面倒だなーって思ったので、すごい簡単なエディタウィンドウを作りました。PlayerPrefsの全消去とKeyを指定してEditorPrefsを消去するだけの機能。すごいシンプル。
PlayerPrefsは全消去を頻繁にするのでAllDeleteのみとなってます。
Unity2018.3からPlayerPrefsを全削除できるメニューアイテムが標準で追加されてるので使うかと言われたら微妙な所。ただ、自分のUnityは2018.2なので作りました。
EditorPrefsはプロジェクトを跨いで値が保存されてるので、全消去しちゃうと他プロジェクトに影響が出かねないので、Keyを指定して消去するようにしてます。
下のプログラムをEditorフォルダに入れると、上のツールバー > Physalis > Tools > Prefs Delete からエディタウィンドウを出すことが出来ます。
using UnityEngine; using UnityEditor; using System; /// <summary> /// Prefs消去するエディタウィンドウ /// </summary> public class PrefsDeleteEditor : EditorWindow { string editorPrefKey = ""; [MenuItem( "Physalis/Tools/Prefs Delete" )] public static void OpenPrefsSettingWindow( ) { PrefsDeleteEditor window = EditorWindow.GetWindow< PrefsDeleteEditor >( "Prefs Delete" ); window.Show( ); } void OnGUI( ) { WindowGUI( ); } /// <summary> /// ウィンドウGUI /// </summary> private void WindowGUI( ) { GUILayout.BeginHorizontal( ); GUILayout.Label( "PlayerPrefs" ); if ( GUILayout.Button( "All Delete" ) ) { PlayerPrefs.DeleteAll( ); PlayerPrefs.Save( ); Debug.Log( "PlayerPrefs all deleted." ); } GUILayout.EndHorizontal( ); GUILayout.Space( 10 ); GUILayout.BeginHorizontal( ); GUILayout.Label( "EditorPrefs" ); if ( GUILayout.Button( "Delete") ) { if ( string.IsNullOrEmpty( editorPrefKey ) ) { throw new Exception( "Key is null or empty." ); } // Keyがあれば消す if ( EditorPrefs.HasKey( editorPrefKey ) ) { EditorPrefs.DeleteKey( editorPrefKey ); Debug.Log( "EditorPrefs( " + editorPrefKey + " )deleted." ); } else { Debug.LogWarning( "EditorPrefs key( " + editorPrefKey + " ) not found." ); } } GUILayout.EndHorizontal( ); editorPrefKey = EditorGUILayout.TextField( "Target EditorPrefs Key", editorPrefKey ); } }