Unity ScriptableObject 保存修改

 ScriptableObject在Inspector上修改数据时,编辑器可以自己把改动保存到文件里。

但在自定义窗口中修改ScriptableObject的数据,虽然在编辑器里看着数据已经被修改了,但实际上文件并未被修改,下一次打开unity还会还原,需要手动去设脏数据,然后保存。

using UnityEditor;
using UnityEngine;

public class SaveSample : EditorWindow
{
    [MenuItem("ScriptableObject示例/保存示例")]
    public static void Open()
    {
        SaveSample sample = GetWindow<SaveSample>();
        sample.Show();
    }

    private SampleScriptableObject asset;

    private void OnGUI()
    {
        asset = EditorGUILayout.ObjectField("资源", asset, typeof(SampleScriptableObject)) as SampleScriptableObject;
        if (asset == null) return;

        asset.id = EditorGUILayout.TextField("ID", asset.id);
        asset.color = EditorGUILayout.ColorField("Color", asset.color);
        if (GUILayout.Button("保存"))
        {
            EditorUtility.SetDirty(asset);
            AssetDatabase.SaveAssetIfDirty(asset);
        }
    }
}

关键代码:

EditorUtility.SetDirty();
AssetDatabase.SaveAssetIfDirty();
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值