如何更有效地将字典数据或数组列表数据保存到播放器中
本文关键字:数据 列表 保存 播放器 数组 何更 有效地 字典 | 更新日期: 2023-09-27 17:57:34
有人知道如何更有效地将字典数据或数组列表数据保存到playerprefs吗?
例如,我有一个类项目:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
// Make Class Item
public class item {
public string itemName;
public int itemID;
public string itemDesc;
public string itemIcon;
public GameObject itemModel;
public int itemTime;
public int hightprice;
public int stdprice;
public int itemStock;
public int harvest;
public RawTree rawTree;
public ItemType itemType;
public ItemProd itemProd;
public ItemLocation itemLocation;
public ItemMerchant itemMerchant;
public int Lvlunlock;
private string baseName;
public int spawnRate;
public int minqtySpawnBuy;
public int maxqtySpawnBuy;
public int minqtySpawnSell;
public int maxqtySpawnSell;
public int itemExp;
public enum ItemType {
Raw,
Admirable,
Valuable
}
public enum RawTree {
BigTree,
SmallTree,
Field,
None
}
public enum ItemProd {
Corps,
Dairy,
JuiceJamMaker,
Kitchen,
Bakery,
CraftHouse,
ChickenCoop,
FishingSpotMountain,
CowPasture,
LunaMine,
PigPen,
FishingSpotLake,
TropicalWood,
SheepPasture,
FishingSpotSea,
Beebox,
HomeIndustry,
Merchant
}
public enum ItemLocation {
Home,
Orchard,
Forest
}
public enum ItemMerchant {
Margaret,
Lucy,
Bobby,
Roger,
Grace
}
public item (string name, int ID, string desc, int harvestx, int time, int stdpricex, int hightpricex, int stock, int Lvlunlockx, RawTree RawTree, ItemType type, ItemProd prod, string folderx, ItemLocation location, ItemMerchant merchant, int rate, int minspawnBuy, int maxspawnBuy, int minspawnSell, int maxspawnSell, int Exp) {
itemName = name;
itemID = ID;
itemDesc = desc;
harvest = harvestx;
itemTime = time;
stdprice = stdpricex;
hightprice = hightpricex;
itemStock = stock;
Lvlunlock = Lvlunlockx;
rawTree = RawTree;
itemType = type;
itemProd = prod;
itemIcon = folderx;
itemLocation = location;
itemMerchant = merchant;
spawnRate = rate;
minqtySpawnBuy = minspawnBuy;
maxqtySpawnBuy = maxspawnBuy;
minqtySpawnSell = minspawnSell;
maxqtySpawnSell = maxspawnSell;
itemExp = Exp;
}
public item() {
}
}
然后我将创建一个列表项:
public List<item> items = new List<item> ();
第一:如何更有效地将项目保存到播放器?
例如,我有字典上的数据:
public Dictionary <string, Dictionary <string, int> > productSellMargaret;
第二:如何更有效地保存产品SellMargaret给玩家?
我如何将它们都保存到playerprefs中,以便在退出游戏并使用continue数据再次玩游戏时继续调用数据?
准确的答案是
"不要将较大的数据保存到PlayerPrefs"
PlayerPrefs
用于保存小值,如游戏设置等。将这种配置保存在PlayerPrefs中是一个很好的方法。
但是
当涉及到保存大规模数据时,如对象列表或嵌套词典。建议将其存储到文件中。
我应该如何解析数据对象并将其保存到文件中
-
有不同的方法可以做到这一点。其中之一是使用
BinaryFormatter
序列化数据对象,并使用System.IO
将其保存在文件中。要想获得一个快速教程来实现这一点,我会推荐你:TutsPlus:How to Save and Load Your Players’Progress in Unity -
同样,这只是一种方法。你也可以使用其他方法。Unity的新JSON序列化程序是另一个不错的选择。
-
如果您想使用
XML
而不是JSON
,那么XMLSerializer是一个不错的选择。
希望这能有所帮助。