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

(続) unity セーブデータの読み込み、書き込みを高速化する。 PreviewLabs.PlayerPrefs

概要

前回書いた記事の追記です。
Unityで利用されるPlayerPrefsの読み込み、書き込み処理を高速化します。
yasuaki-ohama.hatenablog.com

修正点

利用するスクリプトに毎回これを入れなければならなかった部分を修正しました。

using PlayerPrefs = PreviewLabs.PlayerPrefs;

変更点の説明

C#には以下の仕様がある
「ネームスペースを利用したクラスとしていない同名のクラスがある場合、利用しないほうが優先される」
この仕様によって同じクラス名「PlayerPrefs」を宣言すれば自分の作成したクラスが優先して呼ばれます。

using UnityEngine;

namespace NamespaceTest
{
    public static class Sample
    {
        public static void Call()
        {
            //NamespaceTest.Sampleが表示される
            Debug.Log (typeof(Sample).ToString ());
        }
    }
}

public static class Sample
{
    public static void Call()
    {
        //Sampleが表示される
        Debug.Log (typeof(Sample).ToString ());
    }
}

以下のように「using NamespaceTest;」と書いた場合でもネームスペース無しのクラスが優先される

using UnityEngine;
using System.Collections;
using NamespaceTest;

public class Test : MonoBehaviour
{
	void Start () {
        Sample.Call ();
    }
}

f:id:yasuaki-ohama:20160111231210p:plain:w400

補足(利用上の注意)

PlayerPrefsFlush.csのスクリプトを見ない限り、基本的にUnity既存のPlayerPrefsを使っていると考えてしまうので、複数人開発をする時はコンフルなどに書いておきましょう。

以下のような宣言を書いて置き「Scripting Define Symbols」に記載することで回避する方法もあります。

#if USE_PLAYER_PREFS_FLUSH

しかし、PlayerPrefsFlushでしか利用されないメソッドが存在するためエラーが発生するのでおすすめできません。