public List <PropDate> propList; //道具 public void CreatPropDateInstantiate(PropDate propDate) { //读取到数据后实例化该道具 PropDate prop = Instantiate(propPrefab, Vector3.zero, propPrefab.transform.rotation).GetComponent <PropDate> (); //实例化,用于数据持久化 prop.transform.parent = transform; //放置该实例化物体到管理物体下 prop.Index = propDate.Index; //输入编号 prop.prop = propDate.prop; //0为不存在 1为存在 prop.number = propDate.number; //数量 prop.gameObject.name = "Prop" + prop.Index; //命名 propList.Add(prop); //加入到链表中 }
private void WritePropDate() { //保存道具数据 for (int i = 0; i < 20; i++) { //创造20个数据 PropDate prop = new PropDate(); //实例化,用于数据持久化 prop.Index = i; prop.prop = 1; //0为不存在 1为存在 prop.type = Random.Range(1, 50); //种类编号 prop.number = Random.Range(1, 50); //数量 saveDate.SaveProp(prop); } }
private void LoadPropDate() { //道具加载 for (int i = 0; i <= 999; i++) { //遍历从0-999的编号 if (PlayerPrefs.HasKey("Prop" + i)) { //如果该key存在数据,则加载 PropDate newProp = new PropDate(); //new 一个用于储存数据的 newProp.Index = i; newProp.prop = 1; //0为不存在 1为存在 newProp.type = PlayerPrefs.GetInt("PropType" + i); newProp.number = PlayerPrefs.GetInt("PropNumber" + i); propDateManager.CreatPropDateInstantiate(newProp); } } }
//*************道具类 0~999 计量的 /*Prop * PropType * PropNumber * */ public void SaveProp(PropDate propDate) { //保存道具数据 int index = propDate.Index; if (propDate.prop == 0) { //说明不存在需要清空数据 PlayerPrefs.DeleteKey("Prop" + index); //清除数据 PlayerPrefs.DeleteKey("PropType" + index); //清除数据 PlayerPrefs.DeleteKey("PropNumber" + index); //清除数据 } else { PlayerPrefs.SetInt("Prop" + index, 1); //保存道具存在标志位 PlayerPrefs.SetInt("PropType" + index, propDate.type); //保存种类编号 PlayerPrefs.SetInt("PropNumber" + index, propDate.number); //保存数量 } }