Здравствуйте, я новичек в си и в УЕ и у меня мозг уже закипает не могу понять одной вещи, есть у меня U класс который наследуется от
UObject, класс этот используется для создания предметов которые можно хранить в инвентаре и так же выбрасывать в игровой мир, поэтому для отображения этого объекта в мире я использую другой класс наследуемый от AActor. В А классе есть 2 переменные с uproperty макроссом
Код:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item Class")
TSubclassOf<UItem> ItemClass;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item Reference")
UItem* ItemReference;
ItemClass используется для создания предмета из класса, потому что когда объект уже имеется я использую свою spawn функцию с сылкой на него, в противном же случае я использую акторовский констракт,
Код:
void AItemActor::OnConstruction(const FTransform& Transform)
{
if (ItemClass)
{
ItemReference = NewObject<UItem>(this, ItemClass);
MeshComponent->SetStaticMesh(ItemReference->GetStaticMesh());
}
}
и работает все классно, когда я меняю в блюпринте класс предмета, он как указанно выше сразу меняет меш на тот который указан в выбранном классе предмета, а когда я меняю класс на другой соответственно меш меняется и получается что каждый раз когда я меняю значение ItemClass в блюпринте OnConstruction срабатывает снова и снова и меня не покидает мысль что каждый раз когда я меняю класс, создается новый объект, ссылка в ItemReferrence просто обновляется и там где-то зависает куча объектов без ссылок. Так ли это? Как вообще работает OnConstruction и что происходит с объектами на которые ничто не указывает? И еще для чего при создании моего U объекта через NewObject мне нужно указывать на актор через который я его создал? Что вообще такое Outer в NewObject и для чего он нужен?