Удаление префабов в unity3d
Всем привет, как мне доработать код для игры в юнити, чтобы удалились префабы, которые находятся друг за другом и одного цвета
В копилоте подобный код вывел, но он удаляет либо все префабы, если расстояние между объетами большое, либо не находит совпадений. Заранее спасибо кто откликнется)
using System;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace SortItems.Game_Endless_eque.Scripts
{
public class DeletePref : MonoBehaviour
{
private GameObject[] _prefabs;
// Массив префабов
void Start()
{
_prefabs = GameObject.FindGameObjectsWithTag("Roach");
if (_prefabs == null)
{
Debug.LogError("prefabs is null! Check your scene setup.");
return;
}
Array.Sort(_prefabs, (a, b) => a.transform.position.x.CompareTo(b.transform.position.x)); // Сортируем префабы по позиции по оси X
// Перебираем префабы, проверяя их цвет и расстояние между ними
for (int i = 0; i < _prefabs.Length; i++)
{
for (int j = i + 1; j < _prefabs.Length; j++)
{
Color currentColor = _prefabs[i].GetComponent<Renderer>().material.color;
float distanceToNextPrefab = Vector3.Distance(_prefabs[i].transform.position, _prefabs[j].transform.position);
for (int k = j + 1; k < _prefabs.Length; k++)
{
if (currentColor == _prefabs[j].GetComponent<Renderer>().material.color &&
_prefabs[j].GetComponent<Renderer>().material.color ==
_prefabs[k].GetComponent<Renderer>().material.color && distanceToNextPrefab <= 20)
{
Debug.Log($"Найдена комбинация: {_prefabs[i].name}, {_prefabs[j].name},{_prefabs[k].name}");
// Удаляем префабы из сцены
_prefabs[i].SetActive(false);
_prefabs[j].SetActive(false);
_prefabs[k].SetActive(false);
}
}
}
}
}
}
}