【Unity编辑器扩展入门】第 3 章 数据存储

目录

3.1 EditorPrefs

 官方API 静态函数:

例子1:保存/读取int值

例子2:在保存窗口大小时,最适合使用 OnDisable 保存值

3.2 EditorUserSettings.Set /GetConfigValue

3.3 ScriptableObject

保存什么

保存ScriptableObject的地方

使用方法

3.4 JSON


3.1 EditorPrefs

它是一种可以在 PC 中共享的数据存储方法。 与项目无关,最好在 Unity 编辑器之间共享价值。

存储和访问 Unity 编辑器偏好设置。

On macOS, EditorPrefs are stored in ~/Library/Preferences/com.unity3d.UnityEditor5.x.plist.
在 Windows 上,EditorPrefs 存储在注册表中,在 HKCU\Software\Unity Technologies\UnityEditor 5.x 键之下。

 官方API 静态函数:

例子1:保存/读取int值

using UnityEditor;
public class ExampleWindow : EditorWindow
{
    int intervalTime = 60;
    const string AUTO_SAVE_INTERVAL_TIME = "AutoSave interval time(sec)";
    [MenuItem("Window/Example")]
    static void Open()
    {
        GetWindow<ExampleWindow>();
    }
    void OnEnable()
    {
        intervalTime = EditorPrefs.GetInt(AUTO_SAVE_INTERVAL_TIME, 60);
    }
    void OnGUI()
    {
        EditorGUI.BeginChangeCheck();
        //シーン自動保存間隔(秒)
        intervalTime = EditorGUILayout.IntSlider("間隔(秒)", intervalTime, 1, 3600);
        if (EditorGUI.EndChangeCheck())
            EditorPrefs.SetInt(AUTO_SAVE_INTERVAL_TIME, intervalTime);
    }
}

例子2:在保存窗口大小时,最适合使用 OnDisable 保存值

using UnityEngine;
using UnityEditor;
public class ExampleWindow : EditorWindow
{
    const string SIZE_WIDTH_KEY = "ExampleWindow size width";
    const string SIZE_HEIGHT_KEY = "ExampleWindow size height";
    [MenuItem("Window/Example")]
    static void Open()
    {
        GetWindow<ExampleWindow>();
    }
    void OnEnable()
    {
        var width = EditorPrefs.GetFloat(SIZE_WIDTH_KEY, 600);
        var height = EditorPrefs.GetFloat(SIZE_HEIGHT_KEY, 400);
        position = new Rect(position.x, position.y, width, height);
    }
    void OnDisable()
    {
        EditorPrefs.SetFloat(SIZE_WIDTH_KEY, position.width);
        EditorPrefs.SetFloat(SIZE_HEIGHT_KEY, position.height);
    }
}

3.2 EditorUserSettings.Set /GetConfigValue

它是可以在项目中共享的数据存储方法。 此处存储的值是加密的。适用于存储密码等个人信息。

这个官方api已经没有任何信息了,过时了(2021.04.20查询的unity2020.1)

3.3 ScriptableObject

如何保存可在项目中共享的数据。 它是一种适用于各种应用程序的存储方法。如果要在团队中共享设置或保存大量数据,请选择此方法。

保存什么

通过Editor扩展生成的Asset数据或者设定文件、编译后作为游戏数据使用,起到一个数据库的作用。

保存ScriptableObject的地方

只要是在Project下面的Assets文件夹里面就可以。如果是专门用于编辑器扩展的ScriptableObject的话,更倾向于保存在Editor文件夹下面。

使用方法

由于内容很多,所以详细的都在第四章《ScrptableObject》里面介绍。

using UnityEngine;

[CreateAssetMenu]
public class ScriptableObjectTest : ScriptableObject
{
    [Range(0, 10)]
    public int numbers = 3;
    public bool toggle = false;

    public string[] strs ;
}

 

3.4 JSON
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值