Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 2319
настраиваемый обьект:


Код:
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; // обращаемся как к обычному обьекту в коде
   }

};


если "настраиваемые уобьекты" разных классов с разными переменными могут быть
то естественно нужно привести от общего родителя к нужному типу а потом брать его переменные.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 2319
хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами?
тоесть продуманна ли архитектура инвентаря, может достаточно настраивать актор компонент, создавать в нем уобжект(ы), и записывать их в массив.
в массиве искать нужный, брать его , и читать/писать в него что нужно.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
Snake писал(а):
хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами?
тоесть продуманна ли архитектура инвентаря, может достаточно настраивать актор компонент, создавать в нем уобжект(ы), и записывать их в массив.
в массиве искать нужный, брать его , и читать/писать в него что нужно.


Компонент инвентаря хранит в себе массив UObject'ов. UObject'ы хранят в себе информацию о предметах (название, урон и т.п.) и ссылку на блюпринт от актора для добавления предмета на сцену. Вот эту ссылку на блюпринт мне и хочется указывать в самом UObject'e через эдитор.
Аватара пользователя
Пользователь
Сообщения: 2319
ммм.. мне кажется что не оптимальное тогда решение... если нужно настраивать одну переменную...
сомнительного назначения настройка получается.
а актор-компонент у кого хранится?

сейчас в инвентаре учавствую минимум 4 обьекта:
- актор с компонентом
- компонент с уобжектом
- уобжект
- и обьект на который ссылается уобжект вероятно тоже актор но уже другой
каково назначение каждого?
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
Snake писал(а):
ммм.. мне кажется что не оптимальное тогда решение... если нужно настраивать одну переменную...
сомнительного назначения настройка получается.
а актор-компонент у кого хранится?

сейчас в инвентаре учавствую минимум 4 обьекта:
- актор с компонентом
- компонент с уобжектом
- уобжект
- и обьект на который ссылается уобжект вероятно тоже актор но уже другой
каково назначение каждого?

Чёт я запутался. Инвентарь представляет из себя ActorComponent (который висит например на персонаже). ActorComponent хранит в себе массив UObject'ов, которые хранят в себе информацию о предмете. Т.е. каждый UObject - это отдельный предмет.
Для того чтобы выкинуть из инвентаря предмет и добавить его в мир нам нужен blueprint класс наследуемый от actor'a, т.к. UObject'ы не могут находиться на сцене. Соответственно в каждом UObject'e должна лежать ссылка на блюпринт данного предмета.
Аватара пользователя
Пользователь
Сообщения: 2319
ммм... как-то тогда не логично...
в частности:
зачем персонажу хранить уобжект предмета который он выбросил?
К персонажу этот обьект больше не имеет отношения, теперь он сам по себе.
в компоненте персонажа должно храниться только то что связанно с этим персонажем в моем понимании.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
Snake писал(а):
ммм... как-то тогда не логично...
в частности:
зачем персонажу хранить уобжект предмета который он выбросил?
К персонажу этот обьект больше не имеет отношения, теперь он сам по себе.
в компоненте персонажа должно храниться только то что связанно с этим персонажем в моем понимании.

При выбрасывании на сцене создаётся предмет по ссылке на блюпринт от актора, а сам уобжект удаляется.
Аватара пользователя
Пользователь
Сообщения: 2319
все равно мне кажется концепция не верна...
потому что тогда не нужно хранить ссылку на выброшенный предмет...
и возвращает к вопросу:
Цитата:
хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами?

все же нужно сначала архитектуру продумать прежде чем начинать писать код.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 21
Snake писал(а):
все равно мне кажется концепция не верна...
потому что тогда не нужно хранить ссылку на выброшенный предмет...
и возвращает к вопросу:
Цитата:
хотелось бы еще поинтересоваться а что должно настраиваться у компонента инвентаря уобжектами?

все же нужно сначала архитектуру продумать прежде чем начинать писать код.

Или я вас не понимаю, или вы меня. Инвентарь это ActorComponent класс, который висит на персонаже. В ActorComponent находится массив из уобжектов, больше в нём ничего нет (кроме логики выбрасывания предметов, но не суть). Когда предмет выбрасывется из инвентаря создаётся актор на сцене, а обжект из массива в ActorComponent удаляется и больше предмет с персонажем и инвентарём никак не связан.
То что примерно должно получиться описано здесь http://shootertutorial.com/2015/12/15/c ... -tutorial/
Аватара пользователя
Пользователь
Сообщения: 2319
ммм если предмет известного класса зачем настройка их в едитрое.
выбрали в актор компоненте классы предметов в инвентаре все - настройка закончилась.
каждый класс предмета и так может знать во что ему заспавниться при выбрасывании.
какие конкретно переменные будут ы уобжекте для настройки? ссылку на класс актора который должен заспавниться при выбрасывании?

зачем? теоритически если у каждого предмета свой класс - тогда нет смысла менять акторы. просто добавляем в массив нужные классы, ненужные убираем.
актора для выбрасывания можно вобще одного для всех сделать... будет спавниться с разными параметрами, которые указанны в классе предмета...
менять параметры предметов в самих классах предметов.

вот есть класс-предмет пистолет... у него все уже настроенно, он либо в инвентаре, либо на уровне, либо екипирован. в инвеннтаре он числится как 1шт предмет класса пистолет, на уровне спавним актора - с мешем пистолета(актор для всех предметов один и тот же). При екипировке-использовании варианты уже разные могут быть.

так что да я не понимаю функциоального назначения редактированиев едиторе ссылки на какого-то актора ... мне не понятно зачем ее менять и что она дает.
_________________
we need to go deeper


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

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