У меня три класса:
Код: Выделить всё
public class Script
{
}
public class Camera : Script
{
}
public class Cube : Script
{
}
Код: Выделить всё
public void RemoveAllSqripts()
{
Scripts.Clear();
}
public void AddScript(Script script)
{
Scripts.Add(script);
}
public Script GetScript(Type type)
{
for(int i = 0; i < Scripts.Count; i++)
{
if (Scripts[i].GetType() == type)
{
return Scripts[i];
}
}
return null;
}
Код: Выделить всё
GameObject go = new GameObject();
go.AddScript(new Camera());
go.AddScript(new Cube());
Camera camera = go.GetScript(typeof(Camera));
Можно ли изменить тип возвращаемого значения в зависимости от того, какой тип вы передаете в качестве параметра, чтобы go.GetScript(typeof(Camera)) возвращал камеру, а go.GetScript(typeof( Куб)) возвращает Cube?
Я впервые попробовал использовать дженерики (пока не совсем их понимаю) и понял, что если переписать метод GetScript() примерно так:< /p>
Код: Выделить всё
public T GetScript()
{
for (int i = 0; i < Scripts.Count; i++)
{
if (Scripts[i].GetType() == typeof(T))
{
return Scripts[i];
}
}
return default(T);
}
Я пытался просмотреть документацию Microsoft, но это не помогло, потому что я понял только половину написанного. p>
Я благодарен за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -passed-in
Мобильная версия