@Dianka05
Всегда на позитиве :Р

У меня проблема с foreach?

Я новачок в с#

if (this.CompareTag("Cube") && other.CompareTag("Cube"))
        {
            foreach(Activator button in FindObjectOfType<Activator>()) // тут пишет ошибку
            {
                button.canPuch = false;
            }

ошибка
error CS1579: foreach statement cannot operate on variables of type 'Activator' because 'Activator' does not contain a public instance definition for 'GetEnumerator'


public class Activator : MonoBehaviour
{
    public GameObject[] firstGroup;
    public GameObject[] secondGroup;
    public Activator button;
    public Material normal;
    public Material transparent;
    public bool canPuch;

    private void OnTriggerEnter(Collider other)
    {
        if (canPuch)
        {
            if (other.CompareTag("Cube") || other.CompareTag("Player"))
            {
                foreach (GameObject first in firstGroup)
                {
                    first.GetComponent<Renderer>().material = normal;
                    first.GetComponent<Collider>().isTrigger = false;
                }
                foreach (GameObject second in secondGroup)
                {
                    second.GetComponent<Renderer>().material = transparent;
                    second.GetComponent<Collider>().isTrigger = true;
                }
                GetComponent<Renderer>().material = transparent;
                button.GetComponent<Renderer>().material = normal;
                button.canPuch = true;
            }
        }
    }

}
  • Вопрос задан
  • 680 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
FindObjectOfType<Activator> возвращает единственный экземпляр, так что в вашем случае цикл не нужен.
Если хотите получить все экземпляры типа Activator, то надо использовать FindObjectsOfType - тогда получите список, по которому можно пройтись при помощи foreach

UPD: Метод FindObjectsOfType не рекомендуется использовать и он даже помечен как устаревший. Сейчас следует использовать метод FindObjectsByType
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NEDOprogramist
@NEDOprogramist
Изучаю C#
Оператор foreach не может работать с переменными типа Activator, поскольку Activator не содержит определения общедоступного экземпляра для GetEnumerator
Ответ написан
Ваш ответ на вопрос

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

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