Как передать тип компонента в GetComponent?
Подскажите как сохранить тип класса в перкменную и передать его в GetComponent?
Потому что у меня есть switch в котором все одинаково в каждой строке, только меняется тип в GetComponent в зависимости от другой переменной...
switch (myValue)
{
case 1: myGameObject.GetComponent<Class1>().Do();
break;
case 2: myGameObject.GetComponent<Class2>().Do();
break;
}
На самом деле там немного больше кода в каждом кейсе, но суть вопроса понятна... Как исправить подобное дублирование кода?
Пытался что то типо:
System.Type type = typeof(Class1);
myGameObject.GetComponent<type>().Do();
И все в таком духе
Ответы (1 шт):
Автор решения: Yaroslav
→ Ссылка
И как он по твоему будет исполнять метод класса, непонятно какого типа, у которого он не обязательно должен быть?
public interface IDoSomething
{
void DoSomething ();
}
public class FooA : Monobehaviour, IDoSomething
{
public void DoSomething ()
{
//...
}
}
public class FooB : Monobehaviour, IDoSomething
{
public void DoSomething ()
{
//...
}
}
public class Foo : Monobehaviour
{
private IDoSomething[] _do;
private int _doIndex;
public void Start ()
{
_do = new IDoSomething[2];
_do[0] = GetComponent<FooA>();
_do[1] = GetComponent<FooB>();
}
public void Do ()
{
_do[_doIndex].DoSomething();
}
}
Либо через абстрактный класс.