在PlayerPrefs中保存自定义类型的列表

2 c# unity-game-engine

我想在PlayerPrefs中保存Myclass类型的列表。

我看到了一个转换为字符串的示例,我该怎么做?

public class MyClass{
     private int ex;
}
List<MyClass> l = new List<MyClass>();
//How to save it?
Run Code Online (Sandbox Code Playgroud)

Fro*_*ich 5

我个人认为,使用JSON将对象序列化/反序列化为字符串的方法是更好的选择。

您可以找到许多用于C#的JSON库,只需对其进行研究,然后找到一个更适合您的库。

或查看统一维基ArrayPrefs2并进行扩展或使用它来创建自己的解析器以保存对象结构。我个人不建议使用这种方法来保存整个对象,但是可以选择提及...

当您的对象足够简单时,可以按照Povl Eller的建议使用Newtonsoft的 JsonConverter :

保存

Character char = new Character();
char.Name = "Apple";
char.Level = 1;
char.Health = 150;
char.Attributes = new int[] { 10, 10, 10 };

PlayerPrefs.SetString( "PlayerCharacter", JsonConvert.SerializeObject(char) );
Run Code Online (Sandbox Code Playgroud)

加载

Character char = JsonConvert.DeserializeObject<Character>( PlayerPrefs.GetString( "PlayerCharacter" ) );
Run Code Online (Sandbox Code Playgroud)

如果您需要控制更复杂对象或其他对象的序列化,则可以使用newtonsoft网站上同一链接中记录的JsonSerializer。

OBS:我直接在这里编写此代码,但未对其进行测试,可能您需要对其进行调整才能有用...