Unreal Engine 4 http://uengine.ru/forum/ |
|
Несколько вопросов по С++ http://uengine.ru/forum/viewtopic.php?f=19&t=13978 |
Страница 1 из 1 |
Автор: | Monolag [ 05 июл 2018, 12:04 ] |
Заголовок сообщения: | Несколько вопросов по С++ |
1. В дефолтных значениях SkeletalMeshComponent есть enum EAnimationMode. В зависимости от выбранного значения enum в дефолтных значениях меняется интерфейс, появляется выбор аним блюпринта или просто анимации. Как это можно сделать в своем коде? Я так понимаю, если они это сделали, то есть возможность у любого. Так как это сделать? Я попытался полазить в SkeletalMeshComponent, но особо ничего не заметил... 2. В RE7 режим FPP, однако они сделали интеракцию предметов следующим образом: когда ты подходишь близко виджет над предметом отображается одним образом, когда смотришь близко на предмет - другим. Как вы думаете, как они это сделали? Не хочется каждый раз на Event Tick ставить проверку расстояния от предмета до игрока, но других идей сейчас нет. И каким образом происходит event, когда игрок смотрит непосредственно на предмет? Я это делаю с помощью интерфейса, когда капсула игрока оверлэпает предмет, у него вызывается event когда игрок входит в область предмета и появляется виджет. Так вот иногда begin и end overlap event странно работает, то вызывается несколько раз, то вообще не вызывается. Хотелось бы в игре таких скачков избежать, потому что напрямую работает визуал от этого. Как вы решаете эту проблему? Еще из-за капсулы и проверки расстояния на Event Tick игрок, получается, будет видеть предметы сквозь стены, что не есть хорошо. 3. Есть ли способ защитить переменную от изменения в коде? Есть const, да, но если я постоянно изменяю дефолтное значение переменной в эдиторе, а в рантайме хочу, чтобы это значение больше не изменялась, то const будет работать? 4. Обычно, механики делаю компонентом, чтобы можно было легко все переносить. Нормально ли в компоненте кастить к герою игрока? Т.е. по-моему таких кастов лучше избежать, потому что при переносе в другой проект, касты придется менять, что не особо удобно. Лучше от этого избавиться. Как вы справляетесь с этим? 5. Очень интересует вопрос по сохранениям и загрузкам... Хочется реализовать в игре сохранение всего мира, всех изменений, как, к примеру, в Vampyr или AC. По-моему в любых играх это и реализовано. Я сейчас сохраняю только переменные. Но это очень неудобно, так как приходится сохранять каждую систему, в том числе инвентарь. Есть ли плагины или решения таких ситуаций? 6. Вопрос по визуалу. Как лучше реализовывать дефолтные значения в блюпринтах? Наследовать блюпринт от c++ класса, в котором все переменные EditAnywhere или все же создавать и делать их EditAnywhere в блюпринте, а потом передавать в код с++? |
Автор: | gary_cho [ 05 июл 2018, 15:58 ] |
Заголовок сообщения: | |
1. https://wiki.unrealengine.com/Customizing_detail_panels 3. сделай приватной и кто хочет получить знаечение пусть просит через константную функцию 4. это не избежно 5. здесь можешь сам сделать как пожелаешь.. свою сохранку пиши.. сохрани всё в xml или json и потом грузи и восстанавливай 6. в блюпринте делать значения по умолчанию, так как они перепишут значения которые были в коде до этого |
Автор: | Snake [ 05 июл 2018, 19:39 ] |
Заголовок сообщения: | |
4 - в большинстве случаев класс своего героя не нужен, есть стандартные типы в которых реализовано все необходимое. Нужно получить что-то у персонажа ? Что конкретно? Если он нужен значит компонент уже не независимый. Только осталось определиться от кого он должен зависеть. Актор, Павн , Чарактер, и наконец - другой компонент, и только потом в этом списке небазовые классы. связь компонента с другим базовым классом уже вполне приемлема, связь компонента с компонентом тоже звучит неплохо. Связь компонента с кастомным классом чарактера - это хардкод. Значит этот компонент только для этого класса или с таким успехом компонент не особо инужен, можно хардкодить прям в кастомном классе например дело вкуса и потребностей уже, а не проектирования. и наконец интерфейсы еще, интерфейс можно имплементировать кому угодно и получить что нужно, что делает зависимым от интерфейса твой компонент что тоже вполне неплохое решение если интерфейс без сложной имплементации. 5 - ищем материал по сериализации, и смотрим в коде как это сделано у епиков |
Автор: | Monolag [ 20 июл 2018, 09:15 ] |
Заголовок сообщения: | |
Большое спасибо за ответы, очень помогли! В герое мне нужна была только одна переменная - его инвентарь, но уже подумал, что его можно реализовать в том же компоненте, либо инициализировать инвентарь в компоненте через класс игрока. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |