My problem is that I get an ArgumentOutOfRangeException when I go to reopen my inventory after saving. The items don’t show up and I get this error.
My Code
private List<Item> inventory = new List<Item>();
void Start ()
{
LoadInventory();
StartCoroutine(Saving());
}
IEnumerator Saving()
{
while(true)
{
SaveInventory();
yield return new WaitForSeconds(5);
}
}
void SaveInventory ()
{
for (int i = 0; i < inventory.Count; i++)
{
PlayerPrefs.SetInt("Inventory " + i, inventory*.itemID);*
}
}
void LoadInventory ()
{
for (int i = 0; i < inventory.Count; i++)
{
inventory = PlayerPrefs.GetInt("Inventory " + i, -1) >= 0 ? database.items[PlayerPrefs.GetInt("Inventory " + i)] : new Item();
}
}
So I keep getting an:
**ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
*System.Collections.Generic.List1[Item].get_Item (Int32 index) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/List.cs:633)*</em> _*Inventory.LoadInventory () (at Assets/Scripts/Items/Inventory.cs:899)*_ <em>_Inventory.Start () (at Assets/Scripts/Items/Inventory.cs:79)**_</em> <em>_I figure its
inventory = PlayerPrefs.GetInt("Inventory " + i, -1) >= 0 ? database.items[PlayerPrefs.GetInt("Inventory " + i)] : new Item();Doesn't make since because I had it saving when I first made it. Now it just won't load the saved items. I put a
print(i);before it and it returned
12`.
Edit:: I added a debug back and it returns 12 not 0 like I had said before._