けいごのなんとか

Unityユーザーとしてのブログ。ギリギリ路線走ってます。

PlayerPrefsとEditorPrefsをWindowsで使うときに気をつけること

WindowsのPlayerPrefsとEditorPrefsの保存先はレジストリです。

起動中はUnityエディタにキャッシュされているのですが、Unityエディタ起動時の初回のみレジストリから読み込みます。

そこで1つ問題があります

レジストリに日本語を保存することが出来ない

日本語保存は出来るには出来るのですがオススメしないのでここには書きません。

正確には文字化けしてうまく読み込むことが出来ないですね。

なので解決策としてPrefsのkey/valueにどうしても日本語を使用したい場合はBase64に変換してから保存するようにしましょう。

using UnityEngine;
using UnityEditor;
using System.Text;

public class NewBehaviourScript{

    [MenuItem("Window/Save")]
    static void Save (){
        EditorPrefs.SetString ("Hoge", ToBase64 ("日本語"));
    }

    [MenuItem("Window/Load")]
    static void Load (){
        Debug.Log (FromBase64 (EditorPrefs.GetString ("Hoge")));
    }

    static string ToBase64 (string s){
        return System.Convert.ToBase64String (UTF8Encoding.UTF8.GetBytes (s));
    }

    static string FromBase64 (string s){
        return UTF8Encoding.UTF8.GetString (System.Convert.FromBase64String (s));
    }

}

こうすることで綺麗にレジストリの問題を回避することができます。