- Home /
Question by
Michigraf · Feb 04, 2015 at 03:22 PM ·
inventoryinventory systemstackingstackable
problem with item stacking
hello
i display a text list of the inventory. the problem is the stacking. sometimes it works sometimes it adds 2 to quantity. short: it dont work. i have a database with 3 items (id 0, 1, 2). here is the inventory script. the question is with the addItem function:
public class Inventory : MonoBehaviour
{
public List<Item> inventory = new List<Item>();
private ItemDatabase database;
public Transform parent;
public GameObject itemEntry;
public float maxWeight;
void Start()
{
database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();
}
public void DrawInventory()
{
for(int i = 0; i < inventory.Count; i++)
{
Text itemQuantity;
Text itemName;
GameObject newItem = Instantiate(itemEntry) as GameObject;
itemQuantity = newItem.transform.FindChild("quantity").GetComponent<Text>();
itemName = newItem.transform.FindChild("name").GetComponent<Text>();
newItem.name = parent.name + i;
newItem.transform.SetParent(parent.transform,false);
//itemQuantity.text = inventory[i].itemQuantity;
itemName.text = inventory[i].itemName;
itemQuantity.text = "x " + inventory[i].itemQuantity;
}
}
public void HideInventory()
{
var children = new List<GameObject>();
foreach (Transform child in parent) children.Add(child.gameObject);
children.ForEach(child => Destroy(child));
}
public void addItem(int id)
{
if(inventory.Count <= 0)
{
inventory.Add(database.items[id]);
}
else if(inventory.Count > 0)
{
for(int i = 0; 0 < inventory.Count; i++)
{
if(inventory[i].itemID == id)
{
inventory[i].itemQuantity++;
}
else
{
inventory.Add(database.items[id]);
break;
}
}
}
}
}
can someone help me? greets michi
Comment
Your answer
Follow this Question
Related Questions
Stack Problem(Please help!) 0 Answers
Issues with Inventory script 0 Answers
Inventory armor wielding proplem,How to convert from derived to base 1 Answer
Inventory loop bolt 0 Answers
Inventory List Crafting HELP 0 Answers