Есть объект который выполняет функцию игровой клетки, нужно найти её соседей (Центральной клетки, она и чуть светлее остальных). Так-же каждая клетка содержит в себе класс Team, который определяет её цвет. Нужно найти все ли клетки одного цвета граничат друг с другом.
Класс Hexagon (Игровая клетка)
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class hexagon : MonoBehaviour
{
public Team _Team;
public void SetTeam(Team team)
{
_Team.HexagonsCount -= 1;
_Team = team;
}
private void SetTeamConfig()
{
gameObject.GetComponent<Renderer>().material.color = _Team.Color;
}
private void Start()
{
SetTeamConfig();
}
private void InfoPanelSetParam(string TextMeshProPath, string _text)
{
GameObject canvasObject = GameObject.Find("Canvas");
if (canvasObject != null)
{
Transform teamTextTransform = canvasObject.transform.Find($"InfoPanel/{TextMeshProPath}");
if (teamTextTransform != null)
{
TextMeshProUGUI TeamText = teamTextTransform.GetComponent<TextMeshProUGUI>();
if (TeamText != null)
{
TeamText.text = _text;
}
}
}
}
private void OnMouseEnter()
{
Color NewColor = _Team.Color;
NewColor.r += 0.1f;
NewColor.g += 0.1f;
NewColor.b += 0.1f;
gameObject.GetComponent<Renderer>().material.color = NewColor;
InfoPanelSetParam("TeamText",$"Team: {_Team.Name}");
}
private void OnMouseExit()
{
gameObject.GetComponent<Renderer>().material.color = _Team.Color;
}
}
Класс Team (Класс команды, содержит в себе разные параметры...)
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class Team : MonoBehaviour
{
public string Name;
public string Description;
public Color Color;
public int Money;
public int HexagonsCount = 1;
public int UnitsCount = 0;
public int FactoryCount = 0;
public int EconomyCount = 0;
[Range(0, 10)] public int ArmyPower;
[Range(0, 10)] public int FactoryPower;
[Range(0, 10)] public int EconomyPower;
//private TeamUnit[] UnitsVector = new TeamUnit[0];
public int GetUnitsCount() { return UnitsCount; }
public int GetFactoryCount() { return FactoryCount; }
public int GetEconomyCount() { return EconomyCount; }
public void CalculateMoney()
{
int ArmyLoss = (UnitsCount * 2) - UnitsCount * ArmyPower;
int FactoryProfit = FactoryCount * FactoryPower;
int EconomyProfit = FactoryCount / 2 * EconomyCount * EconomyPower;
Money += FactoryProfit + EconomyProfit - ArmyLoss;
}
//private void __AddUnit(TeamUnit newUnit)
//{
// TeamUnit[] NewUnitsVector = new TeamUnit[UnitsVector.Length+1];
// for(int i = 0; i < UnitsVector.Length; i++)
// {
// NewUnitsVector[i] = UnitsVector[i];
// }
// NewUnitsVector[NewUnitsVector.Length] = newUnit;
// UnitsVector = NewUnitsVector;
//}
}
Заранее спасибо. Так же хотел бы чтобы мой код подвергся критике и я улучшил его качество :)