我在使用Unity应用程序中的ScriptableObjects作为保存对象时遇到问题。当我尝试将值写入它们时,一切都很好,但是如果我想关闭应用程序并加载ScriptableObject的值,则会将这些值重置为其最后的值。这破坏了我使用它们保存游戏值的想法。
我试图调试将Values保存到我的Scriptable对象之一的整个过程,这似乎是可行的,并且每当我暂停场景时,所有Scriptable对象中所有的值都会暂停。但是每当我不暂停场景时,Scriptable对象就不会采用任何看起来像的值(这里有一些示例代码)
[CreateAssetMenu(fileName = "stats1", menuName = "ScriptableObjects/Values", order = 1)]
public class ValuesSo : ScriptableObject
{
public string Name;
}
public static class LifeValues
{
public static string Name;
}
public class MainGameMB: MonoBehaviour
{
//I drag and drop the Scriptableobject here so I have it referenced
public ValuesSo Savedstats1;
void Start()
{
Savedstats1.Name = LifeValues.Name;
}
//this is called by a Button call
public void save()
{
LifeValues.Name= Savedstats1.Name;
}
}
(这只是示例代码的一部分,应该是该主题吸引人的所有内容。如果您有任何疑问或需要更多背景知识,请提出,我可以尝试提供)
答案 0 :(得分:3)
您需要引入序列化。
在退出游戏之前(或在“保存点”)将文件保存在磁盘上,并在游戏开始时(或在加载保存文件时)将其加载。
以下是Unity文档的链接:https://docs.unity3d.com/Manual/JSONSerialization.html