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

реализацию интерфейса через метод триггера? Пишу такой код, но он нерабочий:
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 ответов

9 просмотров

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
как так. это же ищет компонент

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

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

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

Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Всем привет. Нужна платная консультация от тех, кто сталкивался с октябрём в кластере или шарит оч хорошо в цмс. Проблема следующая: после переноса в кластер октябрь начал ...
wl
8
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
а я честно сказать не понимаю - нахуя идти учиться на вышку или еще куда-либо и при этом нихуя не делать, типа зачем ? просто корку получить, а нахуй она нужна тогда ?
Eugene Неелов
7
А сколько часов мак держит зарядку в рабочем режиме? Например мой Redmi Mac (просто наклейка от айфона осталась, налепил) по началу держал часов 5 с парой открытых штормов и ...
Ross
8
Ребят, а вот такой вопрос: если я владелец бота анонимного чата, в котором, например, имеются подписки, используя какую-нибудь ЮКассу (или тому подобное, в общем с налогами, в...
Eugene Неелов
8
Ребят, было ли у вас так, что переменные в WebApp —tg-viewport-height, —tg-viewport-stable-height после метода expand не обновляются, а остаются в размерах, как было до expand...
Black
3
зараз якщо створити файл core/custom/define.php з текстом <?php const NO_SESSION = true; можна позбутися сесійних кукі (що зручно, щоб не показувати людям банери про збір та в...
Artur Kyryliuk
1
Карта сайта