Вывести имена объектов Unity, C Sharp
У меня есть 80 объектов и каждый имеет свое имя в public string на одном скрипте Необходимо вывести все объекты, которые были кликнуты и в другом окне, те, что не были кликнуты. Логика думал будет такая. Создам скрипт, где лист или массив, будет принимать имена объектов и через UI.Text буду их выводить
Прием имен
[SerializeField] private Text LeftText;
public static string[] NameObj;
public static List<string> NameObj = new List<string>();
private void Start()
{
for (int i = 0; i < NameObj.Count; i++)
{
//LeftText.text += TClickObj.ObjName + "\n ";
LeftText.text = $"\n" + NameObj[i];
//LeftText.text = $"{NameObj[i]}\n";
//Console.WriteLine(NameObj[i]);
}
LeftText.fontSize = 30;
}
//public static void GetName(string Name)
//{
//for(int i = 0; i < NameObj.Length; i++)
//{
// NameObj.Add(Name);
//}
//NameObj.Add(Name);
//}
И скрипт, где клик с именами
public string ObjName;
public void OnMouseDown()
{
if (!one)
{
TCore.CC++;
one = true;
//TTextControl.GetName(ObjName);
TTextControl.NameObj.Add(ObjName);
}
}
Ответы (1 шт):
Автор решения: Sen Kita
→ Ссылка
Для тех, кто будет юзать. На объект, который нужно кликнуть:
[SerializeField] private string _ObjName;
public string Name { get => _ObjName; }
[SerializeField] private bool _isClicked;
public bool isClicked { get => _isClicked; }
private void OnMouseDown()
{
_isClicked = true;
}
Далее создаем 2 текстовых поля, добавляем их через инспектор и в НОВОМ скрипте:
public class Visualizer : MonoBehaviour
{
[SerializeField] private Text LeftText;
[SerializeField] private Text RightText;
private Naming[] _AllNamingObjects => FindObjectsOfType<Naming>();
private List<string> ObjectsText = new List<string>();
private void Start()
{
LeftText.fontSize = 30;
LeftText.text += $"Найдено:\n ";
for (int i = 0; i < _AllNamingObjects.Length; i++)
{
if (_AllNamingObjects[i].isClicked)
{
LeftText.text += _AllNamingObjects[i].Name + $"\n";
}
}
RightText.fontSize = 30;
RightText.text += $"Не найдено:\n ";
for (int i = 0; i < _AllNamingObjects.Length; i++)
{
if (!(_AllNamingObjects[i].isClicked))
{
RightText.text += _AllNamingObjects[i].Name + $"\n";
}
}
}
}