Unity. Как перебрать и вызывать метод дочерних объектов с разными скриптами?
У меня есть тайловая пошаговая игра в Unity. После хода противников, я хочу перебирать все дочерние объекты (ловушки) в объекте, где хранятся ловушки. Дело в том, что разные ловушки работают по разному, соответственно, имеют разные скрипты и разные методы, в том числе метод проверки, должна ли ловушка активироваться.
Вопрос в том, как можно перебирать объекты ловушек и вызывать их методы проверки, если у них разные скрипты.
Ответы (1 шт):
Полиморфизм же.
К примеру есть интерфейс и метод:
interface ITile
{
void Apply(Player player);
}
И коллекция этих интерфейсов
public ITile[] tiles;
И есть всякие разные классы, реализующие этот интерфейс
class Trap : ITile
{
void Apply(Player player)
{
player.speed = 0;
}
}
class Bonus : ITile
{
void Apply(Player player)
{
player.money += 100;
}
}
Тогда получится вот такой код
tiles = new ITile[2];
tiles[0] = new Trap();
tiles[1] = new Bonus();
К примеру игрок пришел на клетку, он не знает что там.
tiles[position].Apply(this);
То есть встречный эффект от тайла будет зависеть от того, что там внутри за скрипт сидит, но активируются все скрипты одинаково.