unity进阶学习笔记:数据存储管理器

unity自带有一套数据存储的系统,但是其支持的数据类型较少,不是非常好用。这里我们使用第三方存储工具Easy Save进行数据存储和读取。

将Esay Save导入到项目问题记录:

这里我不知道为什么Package Manager始终没法检测到Easy Save的包,我们可以选择Assets -> Import Package -> Custom Package在硬盘中导入Easy Save的unitypackage文件

接下来我们创建了SaveManager脚本用于控制数据储存

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SaveManager
{
    private static SaveManager instance;
    public static SaveManager Instance {
        get {
            if (instance == null) {
                instance = new SaveManager();
            }
            return instance;
        }
    }

    ES3Settings setting = new ES3Settings(ES3.EncryptionType.AES, "test");

    // save
    public void Save<T>(string key, T value) {
        ES3.Save<T>(key, value, setting);
    }

    // load
    public T Load<T>(string key) {
        return ES3.Load<T>(key, setting);
    }

    // load into a gameObject
    public void Loadinto<T>(string key, T t) where T:UnityEngine.Object {
        ES3.LoadInto<T>(key, t, setting);
    }

    // save image in png
    public void SaveImage(Texture2D texture, string imageName) {
        ES3.SaveImage(texture, imageName);
    }

    // load image
    public Texture2D LoadImage(string imageName) {
        return ES3.LoadImage(imageName);
    }

    // clear save
    public void Clear() {
        ES3.DeleteDirectory(setting);
    }
}

1

ES3Settings setting = new ES3Settings(ES3.EncryptionType.AES, "test");

Easy Save包含加密功能,这里我们使用AES加密,加密密钥为一个字符串,我们设为“test”。注意在后面存档程序中如果使用到加密,读档中一定要进行解密

2

// save
    public void Save<T>(string key, T value) {
        ES3.Save<T>(key, value, setting);
    }

    // load
    public T Load<T>(string key) {
        return ES3.Load<T>(key, setting);
    }

存档和读档。由于ES3支持许多中数据类型,我们使用泛型实现

3

// load into a gameObject
    public void Loadinto<T>(string key, T t) where T:UnityEngine.Object {
        ES3.LoadInto<T>(key, t, setting);
    }

将读档内容加载到游戏物体上。有些时候我们希望保存某一游戏物体上面组件的数据,在读档是将数据加载到游戏物体上。如我们保持一个物体transform的坐标位置,然后读档时将坐标值传到同一个transform上。 Esay Save提供了该方法LoadInto。要写入的游戏物体类型我们还是使用泛型定义,不过限制泛型必须属于UnityEngine.Object类型

4

    // save image in png
    public void SaveImage(Texture2D texture, string imageName) {
        ES3.SaveImage(texture, imageName);
    }

    // load image
    public Texture2D LoadImage(string imageName) {
        return ES3.LoadImage(imageName);
    }

读取和保存图片。图片数据类型为Texture2D

5

    // clear save
    public void Clear() {
        ES3.DeleteDirectory(setting);
    }

清空存档

你可能感兴趣的:(unity学习笔记,unity,笔记,c#,数据存储,Easy,Save)