当前位置:   article > 正文

关于Unity3D的ScriptableObject保存的一些问题记录_scriptableobject打包后保存

scriptableobject打包后保存

在通过脚本在游戏中或者编辑器状态下对ScriptableObject进行了修改,关闭编辑器后之前的修改又都没了,原因是在修改后要调用下面这个方法才能保存;

EditorUtility.SetDirty(target);

其中, target代表你需要序列化的对象, 在项目中, 为对应的ScriptableObject.

static function SetDirty (target : Object) : void

Description描述

Marks target object as dirty.

标记目标物体已改变。

Unity internally uses the dirty flag to find out when assets have changed and need to be saved to disk.

当资源已改变并需要保存到磁盘,Unity内部使用dirty标识来查找。

E.g. if you modify a prefab's MonoBehaviour or ScriptableObject variables, you must tell Unity that the value has changed. Unity builtin components internally call SetDirty whenever a property changes. MonoBehaviour or ScriptableObject don't do this automatically so if you want your value to be saved you need to call SetDirty.

例如,如果修改一个prefab的MonoBehaviourScriptableObject变量,必须告诉Unity该值已经改变。每当一个属性发生变化,Unity内置组件在内部调用setDirty。MonoBehaviourScriptableObject不自动做这个,因此如果你想值被保存,必须调用SetDirty。

---------------------------------------2020.6.2  更新----------------------------------------------------------

今天做保存assest文件时单独调用了SetDirty方法,结果退出运行模式时更改又撤销了;

后来问了大佬才知道还要加多一句

     //
     // 摘要:
     //     Writes all unsaved asset changes to disk.
    UnityEditor.AssetDatabase.SaveAssets();

不知道为啥单独用SetDirty不行了,不过总算搞定问题!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/112462
推荐阅读
相关标签
  

闽ICP备14008679号