Weird behaviour when the inventory loads c# unity3d -


i making rpg save , load inventory function. using playerperfs, have problem. let's id of items when save this: 18, 19, 20 , 21, when load, become this: 20, 21, 22 , 23, seems items did not in correct order, , every time loads, increase id 2 last saved. here image of when save , load:

save:

enter image description here

load:

enter image description here

here code:

public static void saveitem() {     try     {         (int = 0; < inventory.count; i++)         {             playerprefs.setint("inventory: " + i, inventory[i].itemid);         }     }      catch     {         debug.logerror("failed save items database!");     } }  public static void loaditem() {     try     {         (int = 0; < inventory.count; i++)         {             inventory[i] = playerprefs.getint("inventory: " + i, -1) >= 0 ? itemdatabase.items[playerprefs.getint("inventory: " + i)] : new itemmanager();         }     }      catch     {         debug.logerror("failed load items database!");     } } 

here code of item database:

private void start() {     items.add(new itemmanager(0, "small health potion", "recovers 10% of health points", 0, (int)_smallhealth, 0, 0, 50, itemmanager.itemtype.consumable, default(itemmanager.armortype)));     items.add(new itemmanager(1, "medium health potion", "recovers 20% of health points", 0, (int)_mediumhealth, 0, 0, 100, itemmanager.itemtype.consumable, default(itemmanager.armortype)));     items.add(new itemmanager(2, "large health potion", "recovers 40% of health points", 0, (int)_largehealth, 0, 0, 200, itemmanager.itemtype.consumable, default(itemmanager.armortype)));     items.add(new itemmanager(3, "small mana potion", "recovers 5% of mana points", 0, 0, (int)_smallmana, 0, 50, itemmanager.itemtype.consumable, default(itemmanager.armortype)));     items.add(new itemmanager(4, "medium mana potion", "recovers 10% of mana points", 0, 0, (int)_mediummana, 0, 100, itemmanager.itemtype.consumable, default(itemmanager.armortype)));     items.add(new itemmanager(5, "large mana potion", "recovers 20% of mana points", 0, 0, (int)_largemana, 0, 200, itemmanager.itemtype.consumable, default(itemmanager.armortype)));      items.add(new itemmanager(8, "banana", "recovers 25% of health points , 5% of mana points", 0, (int)_bananahealth, (int)_bananamana, 0, 225, itemmanager.itemtype.foods, default(itemmanager.armortype)));     items.add(new itemmanager(9, "grape", "recovers 45% of health points , 15% of mana points", 0, (int)_grapehealth, (int)_grapemana, 0, 350, itemmanager.itemtype.foods, default(itemmanager.armortype)));     items.add(new itemmanager(10, "orange", "recovers 65% health points , 25% of mana points", 0, (int)_orangehealth, (int)_orangemana, 0, 475, itemmanager.itemtype.foods, default(itemmanager.armortype)));     items.add(new itemmanager(11, "pineapple", "recovers 100% health points , 40% of mana points", 0, (int)_pineapplehealth, (int)_pineapplemana, 0, 600, itemmanager.itemtype.foods, default(itemmanager.armortype)));      items.add(new itemmanager(12, "blue katana", "a blue katana made japanese people", 75, 0, 0, 0, 150, itemmanager.itemtype.weapon, default(itemmanager.armortype)));     items.add(new itemmanager(13, "yellow katana", "a yellow katana made japanese people", 150, 0, 0, 0, 300, itemmanager.itemtype.weapon, default(itemmanager.armortype)));     items.add(new itemmanager(14, "fire katana", "a fire katana made japanese people", 200, 0, 0, 0, 400, itemmanager.itemtype.weapon, default(itemmanager.armortype)));     items.add(new itemmanager(15, "dark katana", "a dark katana made japanese people", 450, 0, 0, 0, 900, itemmanager.itemtype.weapon, default(itemmanager.armortype)));     items.add(new itemmanager(16, "ice katana", "an ice katana made japanese people", 600, 0, 0, 0, 1200, itemmanager.itemtype.weapon, default(itemmanager.armortype)));     items.add(new itemmanager(17, "silver katana", "an ultimate silver katana made japanese people", 1000, 0, 0, 0, 2000, itemmanager.itemtype.weapon, default(itemmanager.armortype)));      items.add(new itemmanager(18, "ultimate head armor", "an ultimate head armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.head));     items.add(new itemmanager(19, "ultimate body armor", "an ultimate body armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.body));     items.add(new itemmanager(20, "ultimate hand armor", "an ultimate hand armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.hand));     items.add(new itemmanager(21, "ultimate leg armor", "an ultimate leg armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.leg));      items.add(new itemmanager(22, "wind ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype)));     items.add(new itemmanager(23, "earth ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype)));     items.add(new itemmanager(24, "fire ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype)));     items.add(new itemmanager(25, "ice ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype)));      items.add(new itemmanager(26, "wind necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype)));     items.add(new itemmanager(27, "earth necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype)));     items.add(new itemmanager(28, "fire necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype)));     items.add(new itemmanager(29, "ice necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype))); } 

your answer appreciated!

thank much!

your items list consists of elements 0-29 list made upto 27 elements have skipped 2 numbers 6 , 7 in elements database. following correction database has been made:

items.add(new itemmanager(0, "small health potion", "recovers 10% of health points", 0, (int)_smallhealth, 0, 0, 50, itemmanager.itemtype.consumable, default(itemmanager.armortype))); items.add(new itemmanager(1, "medium health potion", "recovers 20% of health points", 0, (int)_mediumhealth, 0, 0, 100, itemmanager.itemtype.consumable, default(itemmanager.armortype))); items.add(new itemmanager(2, "large health potion", "recovers 40% of health points", 0, (int)_largehealth, 0, 0, 200, itemmanager.itemtype.consumable, default(itemmanager.armortype))); items.add(new itemmanager(3, "small mana potion", "recovers 5% of mana points", 0, 0, (int)_smallmana, 0, 50, itemmanager.itemtype.consumable, default(itemmanager.armortype))); items.add(new itemmanager(4, "medium mana potion", "recovers 10% of mana points", 0, 0, (int)_mediummana, 0, 100, itemmanager.itemtype.consumable, default(itemmanager.armortype))); items.add(new itemmanager(5, "large mana potion", "recovers 20% of mana points", 0, 0, (int)_largemana, 0, 200, itemmanager.itemtype.consumable, default(itemmanager.armortype)));  items.add(new itemmanager(6, "banana", "recovers 25% of health points , 5% of mana points", 0, (int)_bananahealth, (int)_bananamana, 0, 225, itemmanager.itemtype.foods, default(itemmanager.armortype))); items.add(new itemmanager(7, "grape", "recovers 45% of health points , 15% of mana points", 0, (int)_grapehealth, (int)_grapemana, 0, 350, itemmanager.itemtype.foods, default(itemmanager.armortype))); items.add(new itemmanager(8, "orange", "recovers 65% health points , 25% of mana points", 0, (int)_orangehealth, (int)_orangemana, 0, 475, itemmanager.itemtype.foods, default(itemmanager.armortype))); items.add(new itemmanager(9, "pineapple", "recovers 100% health points , 40% of mana points", 0, (int)_pineapplehealth, (int)_pineapplemana, 0, 600, itemmanager.itemtype.foods, default(itemmanager.armortype)));  items.add(new itemmanager(10, "blue katana", "a blue katana made japanese people", 75, 0, 0, 0, 150, itemmanager.itemtype.weapon, default(itemmanager.armortype))); items.add(new itemmanager(11, "yellow katana", "a yellow katana made japanese people", 150, 0, 0, 0, 300, itemmanager.itemtype.weapon, default(itemmanager.armortype))); items.add(new itemmanager(12, "fire katana", "a fire katana made japanese people", 200, 0, 0, 0, 400, itemmanager.itemtype.weapon, default(itemmanager.armortype))); items.add(new itemmanager(13, "dark katana", "a dark katana made japanese people", 450, 0, 0, 0, 900, itemmanager.itemtype.weapon, default(itemmanager.armortype))); items.add(new itemmanager(14, "ice katana", "an ice katana made japanese people", 600, 0, 0, 0, 1200, itemmanager.itemtype.weapon, default(itemmanager.armortype))); items.add(new itemmanager(15, "silver katana", "an ultimate silver katana made japanese people", 1000, 0, 0, 0, 2000, itemmanager.itemtype.weapon, default(itemmanager.armortype)));  items.add(new itemmanager(16, "ultimate head armor", "an ultimate head armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.head)); items.add(new itemmanager(17, "ultimate body armor", "an ultimate body armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.body)); items.add(new itemmanager(18, "ultimate hand armor", "an ultimate hand armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.hand)); items.add(new itemmanager(19, "ultimate leg armor", "an ultimate leg armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.leg));  items.add(new itemmanager(20, "wind ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype))); items.add(new itemmanager(21, "earth ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype))); items.add(new itemmanager(22, "fire ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype))); items.add(new itemmanager(23, "ice ring", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.ring, default(itemmanager.armortype)));  items.add(new itemmanager(24, "wind necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype))); items.add(new itemmanager(25, "earth necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype))); items.add(new itemmanager(26, "fire necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype))); items.add(new itemmanager(27, "ice necklace", "just accessory no effect status", 0, 0, 0, 0, 500, itemmanager.itemtype.necklace, default(itemmanager.armortype))); 

you saving in player prefs using item id. consider 16 item id saving when trying retrieve item using players prefs give 16 when apply list 16 item point item in old database. give error when trying acess @ 28 , 29 position there no elements existing @ position. although code work items 0-5 elements missing in order not work after 5

"18, "ultimate head armor", "an ultimate head armor protect user", 100, 0, 0, 0, 1000, itemmanager.itemtype.armor, itemmanager.armortype.head));" 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -