public void Init()
    {
        if (Inited)
        {
            return;
        }

#if UNITY_EDITOR
        //共通のもの
        saveDataRecorder = new CommonSaveDataRecorder <T>();
#else
        //共通のもの
        saveDataRecorder = new CommonSaveDataRecorder <T>();
#endif
        //ロード完了イベント
        saveDataRecorder.OnLoadCompleted().Subscribe(SaveData => {
            if (SaveData != null)
            {
                usingData = new T();

                cacheUsingData = new T();

                cacheUsingData.DeepCopy(usingData);
            }
            else
            {
                Debug.Log("ロードするデータが存在していない");
            }

            //終了イベント
            OnLoadCompletedEvent(SaveData != null);

            Debug.Log("ロード完了");
        }).AddTo(gameObject);

        //セーブ完了イベント
        saveDataRecorder.OnSaveCompleted().Subscribe(errMsg => {
            //セーブ終了イベント
            OnSaveCompletedEvent(errMsg);

            Debug.Log("セーブ完了");
        }).AddTo(gameObject);

        //削除完了イベント
        saveDataRecorder.OnDeleteCompleted().Subscribe(errMsg => {
            //削除完了イベント
            OnDeleteCompletedEvent(errMsg);
        }).AddTo(gameObject);

        //とりあえずデフォルトデータをセットする
        defaultData = new T();

        usingData = new T();

        usingData.DeepCopy(defaultData);

        cacheUsingData = new T();

        cacheUsingData.DeepCopy(defaultData);

        //セーブデータ初期化
        saveDataRecorder.Init(MaxIndex, DataType, ProductName, UseBackUp);

        Inited = true;
    }
 private void OnDestroy()
 {
     saveDataRecorder = null;
 }