Синтаксис:
Используется csharp
public List<itemObj> inventory_item = new List<itemObj>();
Синтаксис:
Используется csharp
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 3.0f))
{
if (Input.GetKeyDown(KeyCode.E) && hit.collider.gameObject.GetComponent<itemObj>())
{
if (inventory_item.Count > 0)
{
int counti = inventory_item.Count;
for (int k = 0; k < counti; k++)
{
if (inventory_item[k].Id == hit.collider.gameObject.GetComponent<itemObj>().Id)
{
Debug.Log("id = id");
inventory_item[k].Stack_Count += hit.collider.gameObject.GetComponent<itemObj>().Stack_Count;
Destroy(hit.collider.gameObject);
break;
}
else
{
Debug.Log("id != id");
inventory_item.Add(hit.collider.gameObject.GetComponent<itemObj>());
Destroy(hit.collider.gameObject);
break;
}
}
}
else
{
inventory_item.Add(hit.collider.gameObject.GetComponent<itemObj>());
Destroy(hit.collider.gameObject);
}
}
}
if (Physics.Raycast(ray, out hit, 3.0f))
{
if (Input.GetKeyDown(KeyCode.E) && hit.collider.gameObject.GetComponent<itemObj>())
{
if (inventory_item.Count > 0)
{
int counti = inventory_item.Count;
for (int k = 0; k < counti; k++)
{
if (inventory_item[k].Id == hit.collider.gameObject.GetComponent<itemObj>().Id)
{
Debug.Log("id = id");
inventory_item[k].Stack_Count += hit.collider.gameObject.GetComponent<itemObj>().Stack_Count;
Destroy(hit.collider.gameObject);
break;
}
else
{
Debug.Log("id != id");
inventory_item.Add(hit.collider.gameObject.GetComponent<itemObj>());
Destroy(hit.collider.gameObject);
break;
}
}
}
else
{
inventory_item.Add(hit.collider.gameObject.GetComponent<itemObj>());
Destroy(hit.collider.gameObject);
}
}
}
Проблема в том что мой код делает проверку только для первого объекта, всех следующих если они есть то не видит, и в место того что бы добавить к уже существующему количество единиц, добавляет как новый объект. Но циклом я перебираю элементы листа от 0 до inventory_item.Count.