Доброго времени суток! Пытаюсь сделать так, что бы в инвентаре нельзя было ставить объект в ячейку если она уже занята, но 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;
}
}
Заранее благодарен за помощь :)