Войти
Unreal EngineФорумBlueprints

UDK4 blueprints нужна помощь (2 стр)

Страницы: 1 2 3 Следующая »
#15
19:53, 22 дек. 2019

Так. Стоп.
Ты делаешь какую-то дичь.
Add Component надо вызывать в Actor:OnConstruction.
OnConstruction вызывается ДО Actor::BeginPlay, а значит компоненты добавленные не будут получать BeginPlay собственно пока не закончится конструирование.


#16
(Правка: 0:02) 0:01, 23 дек. 2019

че вообще делаешь такое?
нахрена ограничение инвентаря таким образом прикручивать?
делай его по дефолту безразмерным, ограничение должно быть в методах где ты кладешь/берешь, а они скорее всего будут в персонаже, который знает сколько уже лежит(может посмотреть) и сколько он может унести
для виджета который все это будет рисовать тоже не нужно
он должен адаптироваться под любое количество предметов в инвентаре
раз уж ты замутил такую хрень с разными размерами

пысы: опять же всякие такие настройки нужно держать в одном месте
желательно конечно в таблице, но можно и в персонаже например

#17
(Правка: 13:45) 13:35, 23 дек. 2019

@!!ex
> Add Component надо вызывать в Actor:OnConstruction.
Да это работает как нужно, спасибо. Не хотел так делать потому что в редакторе конструкторы отрабатывают, да и сами конструкторы нагружать такое себе, не то чтобы памяти жалко было просто тараканы в голове были против этого) На сцене около двух сотен носителей инвентаря будет, не хотелось редактор еще нагружать. Но это лучше чем лейтинит.

mitroxa
> нахрена ограничение инвентаря таким образом прикручивать?
потому что модель должна определять представление. А модель должна инициализироваться в момент создания.

mitroxa
> пысы: опять же всякие такие настройки нужно держать в одном месте
> желательно конечно в таблице, но можно и в персонаже например
Они и лежат в таблице, для примера просто константу проставил.

mitroxa
> делай его по дефолту безразмерным
А дело не конкретно в размере, а в любых передаваемых параметрах.

mitroxa
> ограничение должно быть в методах где ты кладешь/берешь
И для того что бы знать насколько конкретно оно ограничено нужно задать это число. Его я и задаю.

mitroxa
> он должен адаптироваться под любое количество предметов в инвентаре
так и есть

mitroxa
> а они скорее всего будут в персонаже
Это будет неудобно. Компонент удобнее. Инкапсуляция в конце концов.

#18
(Правка: 17:48) 17:35, 23 дек. 2019

Mephistopheles
> > а они скорее всего будут в персонаже
> Это будет неудобно. Компонент удобнее. Инкапсуляция в конце концов.
ты немного неправильно понял, если у тебя есть логика которая например подгружает иконки для айтемов и всякое такое, то это должно быть в компоненте

т.е. у тебя грубо говоря есть метод Inventory.Add() в котором специфичная логика

потом тебе этот метод нужно откуда то вызывать, причем тебе придется несколько реализаций сделать, например ящик с лутом
делаешь интерфейс Inventoryable например и реализуешь его
в базовом контейнере, персонаже, юните и т.п.
в этом интерфейсе будет метод AddToInventory в котором ты проверяешь размер
тем более что там еще многие вещи придется проверять, например нельзя положить в коробку что-то, а персонаж в рюкзаке таскать может

SRP кароче, в инвентаре ты решаешь как положить, в объектах которые используют инвентарь решаешь что положить и сколько

Mephistopheles
> А дело не конкретно в размере, а в любых передаваемых параметрах.
ну конкретно об этом тебе уже посоветовали, сделай свою блюпринт либу на крестах, это несложно совсем
хотя по моему там есть какие-то события которые поднимаются во время создания объектов и в блюпринтах, не помню точно

я же предлагаю более правильный с точки зрения архитектуры способ, который в частности решает это проблему, с моей точки зрения естественно

#19
(Правка: 18:42) 18:15, 23 дек. 2019

mitroxa
> потом тебе этот метод нужно откуда то вызывать, причем тебе придется несколько
> реализаций сделать, например ящик с лутом
> делаешь интерфейс Inventoryable например и реализуешь его
> в базовом контейнере, персонаже, юните и т.п.
> в этом интерфейсе будет метод AddToInventory в котором ты проверяешь размер
в коде я бы так наверное и делал, но блюпринты отдельный разговор, его лучше делать компонентами, проще потом что то поменять. Разок наступил на грабли с рефакторингом блюпринтов, больше не хочу.

mitroxa
> например нельзя положить в коробку что-то, а персонаж в рюкзаке таскать может
Решается обычными черными или белыми списками.

mitroxa
> SRP кароче
Может я плохо обьяснил что делаю, но этот принцип я все таки соблюдаю в большей части.

mitroxa
> ну конкретно об этом тебе уже посоветовали, сделай свою блюпринт либу на
> крестах, это несложно совсем
Он дал совет лучше, в конструктор перенести инициализацию, это сработало как надо.
Кресты это крайняя мера:)

mitroxa
> в инвентаре ты решаешь как положить, в объектах которые используют инвентарь
> решаешь что положить и сколько
это наплодит лишних абстракций и не даст реального профита. Инвентарь внешне это несколько методов: положить, забрать, найти. А внутри уже два слоя - валидация и хранение. По мне так это лучше чем размазать валидацию по всем владельцам инвентаря. Если потребуются белые\черные списки то сделаю через конфигурацию на дженерик валидации и тоже ничего размазывать не нужно будет.
Инвентарь это в игре просто нужен, особо заморачиваться с его реализацией нет особого смысла, игра про другое:)

#20
(Правка: 18:50) 18:45, 23 дек. 2019

Кстати пока тут собрались анрильщики, как лучше сделать миниигры в анриле?
Ну допустим 3д шутер, подходишь к игровому автомату и играешь, например, в марио.
Загружать новый левел и туда перемещать камеру?
Или рендертаргет ставить в текстуру и ее выводить на экран автомата?
Я вообще не в курсе как это делать:) Нужен совет или направление куда копать.

#21
18:56, 23 дек. 2019

Отдельный Level со своим гейммодом и всеми настройками внутри выглядит очень удобным решением.
Но загрузка при входе/выходе из мини игры это ИМХО недопустимо.
Если у тебя игры в 2D - по идее надо не рендер в текстуру делать, а использовать Paper2D он там всё сам и сделает.

#22
19:04, 23 дек. 2019

@!!ex
> а использовать Paper2D он там всё сам и сделает.
спасибо посмотрю

#23
3:27, 24 дек. 2019

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

Mephistopheles
> Кстати пока тут собрались анрильщики, как лучше сделать миниигры в анриле?
> Ну допустим 3д шутер, подходишь к игровому автомату и играешь, например, в
> марио.
где-то в жопе мира делаешь сцену, устанавливаешь камеру чтобы смотрела куда тебе нужно, делаешь рендер в таргет
такое даже где-то в туториалах вроде было в UeDocs, там экран вроде был подключен к камере наблюдения, даже какие-то эффекты были чтобы выглядело как изображение на мониторе

если хочешь все это таскать между уровнями, тогда делай для миниигр отдельные уровни и подгружай их к текущему, это вроде несложно

#24
10:46, 24 дек. 2019

mitroxa
> если хочешь все это таскать между уровнями, тогда делай для миниигр отдельные
> уровни и подгружай их к текущему, это вроде несложно
спасибо

#25
23:13, 7 янв. 2020

Мне все же пришлось частично отказаться от компонентной системы и сделать базовый класс куда я вынес функционал взаимодействия с обьектами. С компонентами это тоже реализуемо, но там нужно
сильно больше кода "написать". А сроки поджимают:)

#26
9:17, 23 янв. 2020

В итоге как решил мини игры делать?

#27
12:23, 23 янв. 2020

@!!ex
> В итоге как решил мини игры делать?
через 2д уровень, подгружать по требованию с рендером в тестуру. но пока не начинал, есть другие задачи.

#28
16:05, 23 янв. 2020

А вот на ентих блююпринтах можно всё что хочешь сделать (в смысле всё что можешь обычным кодом), или это так, для детей в кодинг поиграться

#29
16:14, 23 янв. 2020

Ivashka
Многое нельзя сделать без С++ кода.
Задача блюпринтов не в том, чтобы заменить С++ код. Блюпринты дополняют код, а не заменяют.
Когда я вижу специалиста желающего всё делать на блюпринтах мне хочется его от**дить. Когда я вижу специалиста желающего всё делать на С++ - желание такое же как с блюпритами.

Страницы: 1 2 3 Следующая »
Unreal EngineФорумBlueprints