KeysCG
@KeysCG
3d designer/Art Designer

Как можно исправить foreach в данном случае?

Доброго времени суток! Пытаюсь сделать так, что бы в инвентаре нельзя было ставить объект в ячейку если она уже занята, но foreach ругается на то, что (Оператор foreach не работает с переменными типа "CanvasGroup", так как "CanvasGroup" не содержит открытое определение экземпляра или расширения для "GetEnumerator"), как это можно исправить?
Проблема в этом куске кода:
foreach(CanvasGroup canvasGroup in canvasInventory.GetComponentInChildren<CanvasGroup>())
        {
            canvasGroup.blocksRaycasts = false;
        }

Вот весь код:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class ItemDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    RectTransform rectTransform;
    Canvas canvasInventory;
    Button itemButton;


    void Start()
    {
        rectTransform = GetComponent<RectTransform>();
        itemButton = GetComponent<Button>();
        canvasInventory = GetComponentInParent<Canvas>();
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        rectTransform.SetParent(canvasInventory.GetComponent<RectTransform>());
        GetComponent<CanvasGroup>().blocksRaycasts = false;
        itemButton.enabled = false;
        foreach(CanvasGroup canvasGroup in canvasInventory.GetComponentInChildren<CanvasGroup>())
        {
            canvasGroup.blocksRaycasts = false;
        }
    }
    public void OnDrag(PointerEventData eventData)
    {
        rectTransform.anchoredPosition += eventData.delta / canvasInventory.scaleFactor;
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        GetComponent<CanvasGroup>().blocksRaycasts = true;
        itemButton.enabled = true;
    }
}

Заранее благодарен за помощь :)
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы