当前位置: 首页> 科技> 名企 > Unity使用代码生成ScriptableObject数据并赋值之后,重启数据就没有啦!

Unity使用代码生成ScriptableObject数据并赋值之后,重启数据就没有啦!

时间:2025/7/18 6:22:58来源:https://blog.csdn.net/GoodCooking/article/details/141200534 浏览次数:0次

2024年8月14日早,因数据持续化存储,重启电脑后数据会丢失,而我找不到原因被领导质疑了,故写一片博客记录这个错误。

省流

使用在编辑器的play模式中为ScriptableObject赋值之后,需要使用

#if UNITY_EDITORUnityEditor.EditorUtility.SetDirty(_ScriptableObject);//_ScriptableObject是需要保存的ScriptableObject 对象
#endif

保存,否则会在重启电脑之后清空数据。但是自己赋值,复制的数据不会消失。

Unity数据保存使用ScriptableObject

例子:
创建一个ScriptableObject,如果继承自ScriptableObject的对象中包括另外一个对象,那么那个对象应被标记为:[System.Serializable]。
否则是看不到的。对象都应该被标记为[System.Serializable],除了继承自ScriptableObject的对象。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[CreateAssetMenu(fileName = "ScriptTestSetData", menuName = "ScriptableObjects/ScriptTestSetData")]
public class ScriptTestSetData : ScriptableObject
{public List<SriptDateItem> sriptDateItems = new List<SriptDateItem>();
}[System.Serializable]
public class SriptDateItem
{public string Name = "";public string Description = "";public List<Student> students = new List<Student>();
}[System.Serializable]
public class Student
{public string Tall;public string Sex;}

写入数据

using System.Collections.Generic;
using UnityEngine;public class TestScriptableObj : MonoBehaviour
{public ScriptTestSetData scriptTestSetData;private void Start(){List<SriptDateItem> aaa = new List<SriptDateItem>(); ;for (int j = 0; j < 5; j++){SriptDateItem sriptDateItem = new SriptDateItem();sriptDateItem.Name = "名称" + j.ToString();sriptDateItem.Description = "";sriptDateItem.students = new List<Student>();for (int i = 0; i < 3; i++){Student student = new Student();student.Tall = "11" + i.ToString();student.Sex = "iiii" + i;sriptDateItem.students.Add(student);}aaa.Add(sriptDateItem);}scriptTestSetData.sriptDateItems = aaa;}
}

右键创建一个对象
在这里插入图片描述

创建一个空物体并挂载脚本,将上面的创建的对象拖拽并赋值,然后运行,ScriptableObject就会被赋值。
在这里插入图片描述

但是重启电脑之后就没有啦:

在这里插入图片描述

关键字:Unity使用代码生成ScriptableObject数据并赋值之后,重启数据就没有啦!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: