コード例 #1
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.E))
     {
         Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hit;
         if (Physics.Raycast(ray, out hit))
         {
             Item item = hit.collider.GetComponent <Item>();
             if (item != null)
             {
                 list.Add(item);
                 Destroy(hit.collider.gameObject);
             }
         }
     }
     if (Input.GetKeyUp(KeyCode.I))
     {
         if (inventory.activeSelf)
         {
             craft.activate(false);
             inventory.SetActive(false);
             for (int i = 0; i < inventory.transform.childCount; i++)
             {
                 if (inventory.transform.GetChild(i).transform.childCount > 0)
                 {
                     Destroy(inventory.transform.GetChild(i).transform.GetChild(0).gameObject);
                 }
             }
         }
         else
         {
             craft.activate(true);
             inventory.SetActive(true);
             int count = list.Count;
             for (int i = 0; i < count; i++)
             {
                 Item it = list[i];
                 if (inventory.transform.childCount >= i)
                 {
                     GameObject img = Instantiate(container);
                     img.transform.SetParent(inventory.transform.GetChild(i).transform);
                     img.GetComponent <Image>().sprite = Resources.Load <Sprite>(it.sprite);
                     img.GetComponent <Drag>().item    = it;
                 }
                 else
                 {
                     break;
                 }
             }
         }
     }
 }
コード例 #2
0
ファイル: Inventory.cs プロジェクト: Frederik123/Lessons
    // Update is called once per frame
    void Update()
    {
        // поднимаем предмет
        if (Input.GetMouseButtonUp(1))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition); // пуляем луч
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                Item item = hit.collider.GetComponent <Item>(); // получаем наш item
                if (item != null)                               // если есть компонент Item на объекте на который кликнули , значит он подбираемый
                {
                    list.Add(item);                             // добавляем в лист

                    hit.collider.gameObject.SetActive(false);   // делаем скрытым так как в массив засовывается ссылка на объект.
                    // хз пока как правильно сделать

                    // Destroy(hit.collider.gameObject); // удаляем со сцены
                }
            }
        }

        // показываем инвентарь
        if (Input.GetKeyDown(KeyCode.I))
        {
            if (inventory.activeSelf)
            {
                craft.activate(false);// скрываем панельку крафта

                inventory.SetActive(false);

                // очищаем инвентарь
                for (int i = 0; i < inventory.transform.childCount; i++)
                {
                    if (inventory.transform.GetChild(i).transform.childCount > 0)
                    {
                        Destroy(inventory.transform.GetChild(i).transform.GetChild(0).gameObject);
                    }
                }
            }
            else
            {
                inventory.SetActive(true);
                craft.activate(true);// показываем панельку крафта

                // инициализируем инвентрь
                int count = list.Count; // кол-во вещей в инвенторе
                for (int i = 0; i < count; i++)
                {
                    Item current_item = list[i];

                    if (inventory.transform.childCount >= i)                    // если количество детей в инвенторе больше инвенторя
                    {
                        GameObject img = Instantiate(inventory_cell_container); // создаём объект (из префаба)

                        // делаем дочерним нашей ячейки.
                        //чтобы сделать дочерним один элемент ко второму - надо сделать дочерний их трансформ
                        img.transform.SetParent(inventory.transform.GetChild(i).transform);

                        //добавляем иконку.
                        img.GetComponent <Image>().sprite = Resources.Load <Sprite>(current_item.sprite);

                        // выкидываем предмет
                        // img.AddComponent<Button>().onClick.AddListener(() => remove_item(current_item, img));

                        img.GetComponent <Drag>().item = current_item;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    }