Проблема Единства, говорящая, что Мой Ребенок Преображения вне границы - PullRequest
0 голосов
/ 15 мая 2019

Моя общая цель состояла в том, чтобы создать базовую систему инвентаризации для моей игры, но моя проблема закончилась сбоем всей системы инвентаризации и отсутствием того, что я хочу.

Поэтому я удалил код, но это привело к множественномудругие проблемы Я попытался заменить код, но это привело к той же самой проблеме.

public class Inventory : MonoBehaviour
{    
    public GameObject inventory;
    public GameObject slotHolder;
    private bool inventoryEnabled;
    private int slots;
    private Transform[] slot;
    private bool itemAdded;

    private GameObject itemPickedUp;

    public void Start()
    {
        // slots being detected

        slots = slotHolder.transform.childCount;
        slot = new Transform[slots];
        DetectInventorySlots();
    }

    public void Update()
    {
        if (Input.GetKeyDown(KeyCode.I))
        {
            inventoryEnabled = !inventoryEnabled;
        }

        if (inventoryEnabled)
            inventory.SetActive(true);
        else
            inventory.SetActive(false);            
    }    

    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.GetComponent<Item>())
        {
            itemPickedUp = other.gameObject;
            Additem(itemPickedUp);
        }
    }

    public void Additem(GameObject item)
    {
        for(int i = 0; 1  < slots; i ++)
        {
            if(slot[i].GetComponent<Slots>().empty)
            {
                slot[i].GetComponent<Slots>().item = itemPickedUp;
                slot[i].GetComponent<Slots>().itemIcon = itemPickedUp.GetComponent<Item>().icon;
                itemAdded = true;
            }
        }
    }

    public void DetectInventorySlots()
    {
        for (int i = 0; 1 < slots; i++)
        {
            slot[i] = slotHolder.transform.GetChild(i);
        }
    }
}

Я ожидал, что результат покажет мой предмет в системе инвентаря, но фактический результат - вся система инвентаря не работает и закрываетсявыкл.

1 Ответ

1 голос
/ 15 мая 2019

У вас есть опечатка в DetectInventorySlots, которая приводит к бесконечному циклу. Вам нужно сравнивать переменные i и slots, а не число 1 с slots.

Должно быть:

public void DetectInventorySlots()
{
    for (int i = 0; i < slots; i++)
    {
        slot[i] = slotHolder.transform.GetChild(i);
    }
}

не

public void DetectInventorySlots()
{
    for (int i = 0; 1 < slots; i++)
    {
        slot[i] = slotHolder.transform.GetChild(i);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...