Всем привет. Можете подсказать, как правильно реализовать проверку объекта на

реализацию интерфейса через метод триггера? Пишу такой код, но он нерабочий:
void OnTriggerEnter2D(Collider2D col)
{
var tempMonoArray = col.gameObject.GetComponents<MonoBehaviour>();

foreach (var monoBehavior in tempMonoArray)
{
IDamagable tempColliable = monoBehavior as IDamagable;

if (tempColliable != null) tempColliable.TakeDamage(damage); break;
}
}
Переменная tempColliable все время возвращает null, хотя в классе есть реализация интерфейса.

8 ответов

18 просмотров

TryGetComponent<IDamageble> попробуй (вместо всего безобразия с массивом и <MonoBehaviour>)

Ruslan-Danilov Автор вопроса

Без массива пробовал уже IDamagable obj = col.gameObject.GetComponent<IDamagable>(); все равно null все время возвращал. На форуме нашел ответ с массивом, но и он нерабочий. Хорошо, спасибо, попробую ваш способ.

Ruslan Danilov
Без массива пробовал уже IDamagable obj = col.gam...

Код рабочий, а твой сетап в Unity скорее всего нет. Смотри что за объект приходит и есть ли на нём (в юнити) твой IDamageable скрипт.

Ruslan-Danilov Автор вопроса
Леонид
Код рабочий, а твой сетап в Unity скорее всего нет...

Какой объект приходит проверял уже через Debug.Log и скрипт есть с реализацией интерфейса, который подключен как компонент объекта. Если вместо проверки реализации интерфейса напишу проверку на тег col.CompareTag("Enemy"), то все работает. Но мне нужно именно через проверку реализации интерфейса проверять. Буду тестить и разбираться

Ruslan Danilov
Какой объект приходит проверял уже через Debug.Lo...

Ты ведь буквально монобехи вытащил все с объекта. Продебажь, что там есть нужный, а если нет, то ищи проблему уже. Каст MonoBehaviour в IDamageable точно должен работать, если интерфейс реализован.

Jakonda
TryGetComponent<IDamageble> попробуй (вместо всего...

как так. это же ищет компонент

реализация правильная вроде

Sho
как так. это же ищет компонент

Он и интерфейсы находит отлично

Похожие вопросы

Обсуждают сегодня

Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта