Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с кодом unity

Бабен Профи (638), закрыт 1 день назад
 using UnityEditor.Rendering;
using UnityEngine;

public class SpriteAlphaChanger : MonoBehaviour
{
public GameObject[] obj = null;



void OnTriggerEnter2D(Collider2D collision)
{

obj = GameObject.FindGameObjectsWithTag("wall_z");


obj.GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 1f, 0.5f);
}

void OnTriggerExit2D(Collider2D collision)
{
obj.GetComponents<SpriteRenderer>().color = new Color(1f, 1f, 1f, 1f);

}





}

Assets\SpriteAlphaChanger.cs(16,17): error CS1061: 'GameObject[]' does not contain a definition for 'GetComponent' and no accessible extension method 'GetComponent' accepting a first argument of type 'GameObject[]' could be found (are you missing a using directive or an assembly reference?)

нужно ,чтобы все объекты с этим тэгом становились прозрачными
Лучший ответ
OpEx KoTa Ученик (134) 5 дней назад
Чтобы исправить ошибку и сделать все объекты с тегом "wall_z" прозрачными, нужно работать с каждым элементом массива отдельно. Вот исправленный код:

csharp
Copy
using UnityEngine;

public class SpriteAlphaChanger : MonoBehaviour
{
private GameObject[] walls; // Переименовал для ясности

void OnTriggerEnter2D(Collider2D collision)
{
walls = GameObject.FindGameObjectsWithTag("wall_z");

foreach(GameObject wall in walls)
{
SpriteRenderer renderer = wall.GetComponent<SpriteRenderer>();
if(renderer != null)
{
renderer.color = new Color(1f, 1f, 1f, 0.5f);
}
}
}

void OnTriggerExit2D(Collider2D collision)
{
foreach(GameObject wall in walls)
{
SpriteRenderer renderer = wall.GetComponent<SpriteRenderer>();
if(renderer != null)
{
renderer.color = new Color(1f, 1f, 1f, 1f);
}
}
}
}
Основные изменения:

Заменил обращение ко всему массиву на цикл foreach

Добавил проверку if(renderer != null) для безопасности

Использовал отдельную переменную для хранения SpriteRenderer

Переименовал массив для лучшей читаемости

Теперь при входе в триггер все объекты с тегом "wall_z" станут полупрозрачными, а при выходе - снова полностью непрозрачными.
Frodo _Знаток (326) 4 дня назад
А слабо тебе не пользоваться gpt?
Остальные ответы
Котище рыжий Мастер (1309) 2 дня назад
У тебя FindGameobjectS который возвращает массив а нужен FindGameObject. Либо указывай индекс в массиве. Либо перебирай массив и применяй ко всем.
Похожие вопросы