Полезное

Мы Вконтакте

Discord канал

#
Модератор: Di-Crash
Аватара пользователя
Пользователь
Сообщения: 157
Ну вот смотри. Бывают моменты, когда ты имеешь дело с родительским классом, Actor, например.
Но функционал используешь потомков, Character, например.
Относительно тригера, как раз именно так.. Евент передает тебе данные о Actor классе, который перекрывает коллизию тригера.
Но тебе, например, нужно понять коснулся ли тригера физический шарик (потомок Actor класса), например, или же игрок.
Ты можешь проверить не Pawn ли игрока конснулся, сравнив if(Actor == PlayerCharacter){}
Или у тебя у MyCharacter есть Health, а у предков его нет и у Actor нет. Вот ты и приводишь тип, типа а не MyCharacter (инстанс - экземпляр класса) ли это?
И если это MyCharacter то считываешь его Health.

Нанести повреждения MyCharacter ты можешь, вызвав метод ApplyDammage() на Actor класс, который коснулся, а уже сам Actor потомок обработаем метод внутри. Потомки могут переопределять методы (иначе выполнять нежели предки)...
Ну, это весьма сложно, и не сразу понятно, потому требуется время и иногда ООООчень много времени чтобы просто понять эти несложные принципы..
_________________
Если вас обосрали, потерпите... Скоро оно само отсохнет и отпадет...
Skype: ogasoda
Мой канал на YouTube
Аватара пользователя
Пользователь
Сообщения: 157
Если тебя и впрямь интересует данная тема, то приводи конкретные примеры твоей реализации с вопросами, которые тебя интересуют.
Так и тебе и нам будет проще общаться
_________________
Если вас обосрали, потерпите... Скоро оно само отсохнет и отпадет...
Skype: ogasoda
Мой канал на YouTube
Аватара пользователя
Пользователь
Сообщения: 157
Во! Придумал как проще пояснить ))))

Если нет возможности точно понять на экземпляр какого класса ты напоролся (на какой объект сцены, к примеру), тогда нужно откастрировать его к нужному тебе типу (желательно к ближайшему старшему предку, который имеет тот же функционал) и вызвать метод или узнать свойство.

Это самый простой способ понять когда нужно и разумно применять кастрирование.
_________________
Если вас обосрали, потерпите... Скоро оно само отсохнет и отпадет...
Skype: ogasoda
Мой канал на YouTube
Аватара пользователя
Пользователь
Сообщения: 213
Ну вот самый часто используемый мной пример использования каста. Есть кнопка действия которая вызывает определеное событие в блюпринте персонажа, объекты с которыми можно взаимодействовать при старте привязываются к этому событию с помощью каста. в итоге каст делается один раз и на всегда. Мне казалось это достаточно эффективным решением.
Изображение
Аватара пользователя
Пользователь
Сообщения: 213
И еще вопрос, на сколько значима для производительности, оптимизация кода по сравнению с оптимизацией графики?
Аватара пользователя
Пользователь
Сообщения: 157
Цитата:
Ну вот самый часто используемый мной пример использования каста. Есть кнопка действия которая вызывает определеное событие в блюпринте персонажа, объекты с которыми можно взаимодействовать при старте привязываются к этому событию с помощью каста. в итоге каст делается один раз и на всегда. Мне казалось это достаточно эффективным решением.

В данном случае GetPlayerCharacter() возвращает тебе ссылку на экземпляр класса Chatracter.
Дальше ты, видимо, хочешь получить к доступ к методам и свойствам Lunohod_Character, как я и говорил выше, только поэтому ты пытаешься привести его к типу Lunohod_Character. И если Character игрока это представитель класса Lunohod_Character, твои дальнейшие действия пойдут по сценарию успешного приведения (по верхней ветке), иначе по сценарию CasfFailed.

Если честно, я не понимаю этой блупринтовской схемы привязки событий, я использую C++ для этого. Посему не могу судить о необходимости периведения к типу Lunohod_Character для дальнейшего биндинга...
В данном случае биндинг что делает? Он использует реакцию на евент в классе Lunohod_Character ? Тогда приведение рационально. И другого решения я тут не вижу.
_________________
Если вас обосрали, потерпите... Скоро оно само отсохнет и отпадет...
Skype: ogasoda
Мой канал на YouTube
Аватара пользователя
Пользователь
Сообщения: 157
Цитата:
И еще вопрос, на сколько значима для производительности, оптимизация кода по сравнению с оптимизацией графики?

по-разному. Графика же тормозит не просто потому что она графика, а потому что алгоритм вычисления расположение и цвета пикселя в на экране не оптимальный.
Он может быть из-за того, что на сцене много динамических источников с тенями или сложные шейдеры материалов (считай программы, которые выполняет процессор видеокарты).

Программный код тоже может напрячь FPS, если он будет выполнять сложные проверки на евентах типа Tick или таймерах с высокой скоростью исполнения в секунду.

Если, например, ты каждый тик трейсишь пространство 100500 лучами у 100500 паунов. То ты получишь пошаговую стратегию с высокой степенью вероятности )) (FPS сильно упадет в смысле)
_________________
Если вас обосрали, потерпите... Скоро оно само отсохнет и отпадет...
Skype: ogasoda
Мой канал на YouTube
Аватара пользователя
Пользователь
Сообщения: 213
Это понятно, но полагаю пугать новичков парой лишних кастов тоже не стоит, все проходят через это, да и к тому же 21 век на дворе, любая кофемолка это переварит. Я понимаю, что опытных програмистов задевает такое отношение, но для того блюпринты и придумали, чтобы люди далекие от C++ могли делать крутые штуки не задумываясь о правилах и этикете програмирования.
Аватара пользователя
Пользователь
Сообщения: 157
Цитата:
Я понимаю, что опытных програмистов задевает такое отношение, но для того блюпринты и придумали, чтобы люди далекие от C++ могли делать крутые штуки не задумываясь о правилах и этикете програмирования.

Да причем тут этика? )) я тебя умоляю ))) Я сам этику и правила не приемлю. Дело в оптимизации и структурировании проекта.

Впрочем, я уже записал видео, где подробно показал что такое Cast, для чего он рименяется и на сколько он усложняет процесс создания игры. Это относится и к C++ и к BP(надстройка над C++)
дело не в быстродействии, дело в мобильности системы.

Короче, как закончит обрабатываться видео, закину его на YouTube и сюда в раздел уроков.
Возможно многие вопросы уйдут.
_________________
Если вас обосрали, потерпите... Скоро оно само отсохнет и отпадет...
Skype: ogasoda
Мой канал на YouTube
Аватара пользователя
Пользователь
Сообщения: 157
Цитата:
чтобы люди далекие от C++ могли делать крутые штуки не задумываясь о правилах и этикете програмирования.

ты пойми BP это расширенный C++, у него условностей еще больше чем в формальном C++.
Я сам порой в BP плаваю, потому что некоторые формы обращений к элементам мене мозг выворачивают на изнанку.
BP даже эпичные Эпики часто применяют как тест перед упаковкой в C++.

ПыСы. Я не ругаюсь, я пытаюсь донести мысль, что понимание основ ООП - важно. Иначе вы напоретесь на такие проблемы, которые покажутся вам неразрешимыми )))
_________________
Если вас обосрали, потерпите... Скоро оно само отсохнет и отпадет...
Skype: ogasoda
Мой канал на YouTube


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 112

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница