unity场景切换数据保存
public class abc: MonoBehaviour{
public string a;
public string b;
public string d;
public bool d;
public List<e> playerDatas;
}
public class e: MonoBehaviour{
public string ab;
public string ac;
public string ad;
}
......
场景切换保存abc属性,在下个场景中abc中a,b,c,d数据存在,e数据不存在,
场景切换的时候如何保存对象数组类型?
不继承MonoBehaviour
答案:
在Unity中,可以使用PlayerPrefs来保存特定的属性数据,在场景切换时可以将数据从PlayerPrefs读取出来并重新赋值给相应的属性。具体步骤如下:
在需要保存的场景中,将需要保存的属性数据存入PlayerPrefs中,例如:
PlayerPrefs.SetFloat("a", a); PlayerPrefs.SetFloat("b", b); PlayerPrefs.SetFloat("c", c); PlayerPrefs.SetFloat("d", d);
注意,要保存的数据类型应该转换为字符串类型存储。
在需要读取数据的场景中,读取相应的数据并重新赋值给相应的属性,例如:
a = PlayerPrefs.GetFloat("a"); b = PlayerPrefs.GetFloat("b"); c = PlayerPrefs.GetFloat("c"); d = PlayerPrefs.GetFloat("d");
注意,读取的数据类型需要根据原始数据类型来进行转换,例如上面存储的是浮点型数据,那么读取时需要使用GetFloat方法。
对于对象数组类型的数据,可以将该对象转换为Json格式进行保存,例如:
string json = JsonUtility.ToJson(myObjectArray); PlayerPrefs.SetString("myObjectArray", json);
这里需要用到JsonUtility类来将对象转换为Json格式,再将其存入PlayerPrefs中。
在读取该对象数组时,可以先读取该对象对应的Json字符串,并将其转换为对象数组,例如:
string json = PlayerPrefs.GetString("myObjectArray"); MyObject[] newArray = JsonUtility.FromJson<MyObject[]>(json);
注意,这里需要使用FromJson方法将Json格式的字符串转换为对象数组,同时需要提前定义好MyObject类。
综上所述,以上就是在Unity中保存和读取特定属性数据以及对象数组类型数据的方法。