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

C# 在PlayerPrefs中保存自定义类型的列表,c#,unity3d,C#,Unity3d,我想在PlayerPrefs中保存Myclass类型的列表 我看到了一个转换字符串的例子,我该怎么做 public class MyClass{ private int ex; } List<MyClass> l = new List<MyClass>(); //How to save it? 公共类MyClass{ 私人综合交易所; } 列表l=新列表(); //如何保存它? 尝试使用newtonsoft.json 他们提供了扩展示例,这两个示例应该可以帮助

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

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

public class MyClass{
     private int ex;
}
List<MyClass> l = new List<MyClass>();
//How to save it?
公共类MyClass{
私人综合交易所;
}
列表l=新列表();
//如何保存它?

尝试使用newtonsoft.json

他们提供了扩展示例,这两个示例应该可以帮助您开始:

最好的问候

也许是

for(int i=0;i<list.length;i++)
{
    PlayerPrefs.SetString(list(i).name, list(i).value);
}

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

你可以找到很多C#的JSON库,只要研究一下,找到一个更适合你的

或者看看unity wiki,并扩展或使用它来创建您自己的解析器来保存对象结构。我个人不建议使用这种方法来保存整个对象,但可以提及

当您的对象足够简单,可以按照Povl Eller的建议从中使用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) );
装载

Character char = JsonConvert.DeserializeObject<Character>( PlayerPrefs.GetString( "PlayerCharacter" ) );
Character char=JsonConvert.DeserializeObject(PlayerPrefs.GetString(“PlayerCharacter”);
如果需要控制更复杂对象或其他对象的序列化,可以使用newtonsoft网站上的同一链接中记录的JsonSerializer


OBS:我在这里直接编写了这段代码,没有对它进行测试,可能您需要调整它以使其有用…

请包含一些代码片段,以便您的问题易于理解。请注意,根据目标平台的不同,PlayerPref可能有字符串大小限制。请参阅此答案,仅使用链接对ans来说是一种不好的做法wer,因为链接可能会变得无效,响应也可能变得无用