Как передать тип переменной из одного метода в другого? Или как сохранить тип?
Вот у нас есть метод, который проверяет являются ли элементы массива юнитами:
public static void SelectGroup()
{
for (int i = 0; i < selectedGroup.Count; i++)
{
Unit unit = selectedGroup[i].GetComponent(UnitType );
if (unit != null) { };
}
}
И мы хотим, что бы мы могли задавать тип искомых юнитов из другого места, допустим методом вида:
public static void SelectingUnitType<T>()
{
...
}
Ответы (1 шт):
Автор решения: Виталий Тодоров
→ Ссылка
Собственно моя проблема была в том, что я забыл указать where T : Unit
Когда я всё поправил, вот такая штука у меня получилась:
public class Controller : MonoBehaviour
{
private static Type _selectableUnitType;
public static void SelectingUnitType<T>() where T : Unit
{
_selectableUnitType = typeof(T);
}
public static void SelectGroup()
{
for (int i = 0; i < selectedGroup.Count; i++)
{
Unit unit = selectedGroup[i].GetComponent(_selectableUnitType) as Unit;
if (unit != null) { };
}
}
}
Теперь мы можем задавать тип выделяемых юнитов из любого места
Controller.SelectingUnitType<UnitType>();
Что касается unity и данной реализации, что бы работал GetComponent(), класс Unit должен быть наследником либо от Component, либо от MonoBehaviour.