MRが楽しい

MRやVRについて学習したことを書き残す

UnityのEditorUserSettingsで情報を保存する

本日は Unity の小ネタ枠です。
UnityのEditorUserSettingsで情報を保存する方法です。

UnityEditor.EditorUserSettings

UnityEditor.EditorUserSettingsクラスを使うとEditorUserSettingsファイルにキーと値を保存できます。
ログイン情報などプロジェクトを扱うユーザ毎に情報を保存させたい場合に役立ちます。

// キーと値を保存する
EditorUserSettings.SetConfigValue(key, value);

// キーから値を取得する
value = EditorUserSettings.GetConfigValue(key);

EditorUserSettingsファイルはUnityプロジェクトの以下のディレクトリに保存されています。

UserSettings/EditorUserSettings.asset

サンプルスクリプト

以下の前回記事で作成したエディターウィンドウで入力したログインIDとパスワードをEditorUserSettingsファイルに保存します。
bluebirdofoz.hatenablog.com

・SampleEditorWindow.cs

using UnityEditor;
using UnityEngine;

public class SampleEditorWindow : EditorWindow
{
    // ユーザIDとパスワードのキー
    private const string UserIdKey = "UserId";
    private const string PasswordKey = "Password";
    
    private string userId = string.Empty;
    private string password = string.Empty;
    
    /// <summary>
    /// メニューから Window -> SampleEditorWindow を選択してカスタムウィンドウを開く
    /// </summary>
    [MenuItem("Window/SampleEditorWindow")]
    private static void Open()
    {
        SampleEditorWindow window = (SampleEditorWindow)GetWindow<SampleEditorWindow>("SampleEditorWindow");
        
        // ユーザIDとパスワードの初期値をEditorUserSettingsから取得
        window.userId = EditorUserSettings.GetConfigValue(UserIdKey);
        window.password = EditorUserSettings.GetConfigValue(PasswordKey);
        
        // ウィンドウを開く
        window.Show();
    }
    
    /// <summary>
    /// OnGUI は入力変更またはボタン押下が行われると呼び出されます
    /// </summary>
    private void OnGUI()
    {
        EditorGUILayout.LabelField("SampleEditorWindow");
        EditorGUILayout.Space();
        
        // ユーザIDのテキストフィールドの表示と値の取得
        EditorGUILayout.LabelField(UserIdKey);
        userId = EditorGUILayout.TextField(userId);
        
        // パスワードのテキストフィールドの表示と値の取得
        EditorGUILayout.LabelField(PasswordKey);
        password = EditorGUILayout.PasswordField(password);
        
        EditorGUILayout.Space();
        
        // ログインボタン押下時にログイン処理(ログ表示)を実行
        if (GUILayout.Button("Login"))
        {
            Debug.Log($"Login : userId = {userId}, password = {password}");
            
            // ユーザIDとパスワードの値をEditorUserSettingsに保存
            EditorUserSettings.SetConfigValue(UserIdKey, userId);
            EditorUserSettings.SetConfigValue(PasswordKey, password);
        }
    }
}

エディターウィンドウから値を保存してみます。

保存後、EditorUserSettingsファイルを確認するとキーと値が保存されています。

再び、ウィンドウを開くとファイルから情報が読み込まれて表示されました。