Unreal Engine 4 http://uengine.ru/forum/ |
|
Инвентарь на UObject'ах http://uengine.ru/forum/viewtopic.php?f=19&t=12922 |
Страница 2 из 3 |
Автор: | Snake [ 06 янв 2018, 12:33 ] |
Заголовок сообщения: | |
настраиваемый обьект: Код: UCLASS( Blueprintable, BlueprintType, EditInlineNew) // EditInlineNew позволяет обьяввить переменную как Instanced class TEST_API UTestObject: public UObject { GENERATED_BODY() public: bool MyBool=false; }; обьект в котором вложен настраиваемый обьект: Код: #include "TestObject.h" UCLASS( ClassGroup=(Custom), Blueprintable, BlueprintType) class TEST_API UMyActorComponent: public UActorComponent { GENERATED_BODY() public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced) //спецификатор инстансед UTestObject* ObjectVar; bool GetObjBool() { return ObjectVar->MyBool; // обращаемся как к обычному обьекту в коде } }; если "настраиваемые уобьекты" разных классов с разными переменными могут быть то естественно нужно привести от общего родителя к нужному типу а потом брать его переменные. |
Автор: | Snake [ 06 янв 2018, 12:57 ] |
Заголовок сообщения: | |
хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами? тоесть продуманна ли архитектура инвентаря, может достаточно настраивать актор компонент, создавать в нем уобжект(ы), и записывать их в массив. в массиве искать нужный, брать его , и читать/писать в него что нужно. |
Автор: | kiteg [ 06 янв 2018, 13:19 ] |
Заголовок сообщения: | Re: |
Snake писал(а): хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами? тоесть продуманна ли архитектура инвентаря, может достаточно настраивать актор компонент, создавать в нем уобжект(ы), и записывать их в массив. в массиве искать нужный, брать его , и читать/писать в него что нужно. Компонент инвентаря хранит в себе массив UObject'ов. UObject'ы хранят в себе информацию о предметах (название, урон и т.п.) и ссылку на блюпринт от актора для добавления предмета на сцену. Вот эту ссылку на блюпринт мне и хочется указывать в самом UObject'e через эдитор. |
Автор: | Snake [ 06 янв 2018, 13:36 ] |
Заголовок сообщения: | |
ммм.. мне кажется что не оптимальное тогда решение... если нужно настраивать одну переменную... сомнительного назначения настройка получается. а актор-компонент у кого хранится? сейчас в инвентаре учавствую минимум 4 обьекта: - актор с компонентом - компонент с уобжектом - уобжект - и обьект на который ссылается уобжект вероятно тоже актор но уже другой каково назначение каждого? |
Автор: | kiteg [ 06 янв 2018, 13:45 ] |
Заголовок сообщения: | Re: |
Snake писал(а): ммм.. мне кажется что не оптимальное тогда решение... если нужно настраивать одну переменную... сомнительного назначения настройка получается. а актор-компонент у кого хранится? сейчас в инвентаре учавствую минимум 4 обьекта: - актор с компонентом - компонент с уобжектом - уобжект - и обьект на который ссылается уобжект вероятно тоже актор но уже другой каково назначение каждого? Чёт я запутался. Инвентарь представляет из себя ActorComponent (который висит например на персонаже). ActorComponent хранит в себе массив UObject'ов, которые хранят в себе информацию о предмете. Т.е. каждый UObject - это отдельный предмет. Для того чтобы выкинуть из инвентаря предмет и добавить его в мир нам нужен blueprint класс наследуемый от actor'a, т.к. UObject'ы не могут находиться на сцене. Соответственно в каждом UObject'e должна лежать ссылка на блюпринт данного предмета. |
Автор: | Snake [ 06 янв 2018, 13:59 ] |
Заголовок сообщения: | |
ммм... как-то тогда не логично... в частности: зачем персонажу хранить уобжект предмета который он выбросил? К персонажу этот обьект больше не имеет отношения, теперь он сам по себе. в компоненте персонажа должно храниться только то что связанно с этим персонажем в моем понимании. |
Автор: | kiteg [ 06 янв 2018, 14:04 ] |
Заголовок сообщения: | Re: |
Snake писал(а): ммм... как-то тогда не логично... в частности: зачем персонажу хранить уобжект предмета который он выбросил? К персонажу этот обьект больше не имеет отношения, теперь он сам по себе. в компоненте персонажа должно храниться только то что связанно с этим персонажем в моем понимании. При выбрасывании на сцене создаётся предмет по ссылке на блюпринт от актора, а сам уобжект удаляется. |
Автор: | Snake [ 06 янв 2018, 14:10 ] |
Заголовок сообщения: | |
все равно мне кажется концепция не верна... потому что тогда не нужно хранить ссылку на выброшенный предмет... и возвращает к вопросу: Цитата: хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами? все же нужно сначала архитектуру продумать прежде чем начинать писать код. |
Автор: | kiteg [ 06 янв 2018, 14:18 ] |
Заголовок сообщения: | Re: |
Snake писал(а): все равно мне кажется концепция не верна... потому что тогда не нужно хранить ссылку на выброшенный предмет... и возвращает к вопросу: Цитата: хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами? все же нужно сначала архитектуру продумать прежде чем начинать писать код. Или я вас не понимаю, или вы меня. Инвентарь это ActorComponent класс, который висит на персонаже. В ActorComponent находится массив из уобжектов, больше в нём ничего нет (кроме логики выбрасывания предметов, но не суть). Когда предмет выбрасывется из инвентаря создаётся актор на сцене, а обжект из массива в ActorComponent удаляется и больше предмет с персонажем и инвентарём никак не связан. То что примерно должно получиться описано здесь http://shootertutorial.com/2015/12/15/c ... -tutorial/ |
Автор: | Snake [ 06 янв 2018, 14:36 ] |
Заголовок сообщения: | |
ммм если предмет известного класса зачем настройка их в едитрое. выбрали в актор компоненте классы предметов в инвентаре все - настройка закончилась. каждый класс предмета и так может знать во что ему заспавниться при выбрасывании. какие конкретно переменные будут ы уобжекте для настройки? ссылку на класс актора который должен заспавниться при выбрасывании? зачем? теоритически если у каждого предмета свой класс - тогда нет смысла менять акторы. просто добавляем в массив нужные классы, ненужные убираем. актора для выбрасывания можно вобще одного для всех сделать... будет спавниться с разными параметрами, которые указанны в классе предмета... менять параметры предметов в самих классах предметов. вот есть класс-предмет пистолет... у него все уже настроенно, он либо в инвентаре, либо на уровне, либо екипирован. в инвеннтаре он числится как 1шт предмет класса пистолет, на уровне спавним актора - с мешем пистолета(актор для всех предметов один и тот же). При екипировке-использовании варианты уже разные могут быть. так что да я не понимаю функциоального назначения редактированиев едиторе ссылки на какого-то актора ... мне не понятно зачем ее менять и что она дает. |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |