Hi, I have some trouble updating my project to 4.8 : I have some “ConstructObject is deprecated” in my compilation, and it say to use NewObject() instead.
I find it really weird since I’m using ConstructObject because it what everyone say to use instead of NewObject, and I have no idea how to use NewObject to match my actual code :
UStaticMeshComponent* comp = ConstructObject<UStaticMeshComponent>(UStaticMeshComponent::StaticClass(), this, *node->GetAttribute("name"));
comp->RegisterComponent();
comp->SetStaticMesh(Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(), NULL, TEXT("/Engine/EngineMeshes/Cube.Cube"))));
comp->AttachTo(GetRootComponent(), NAME_None, EAttachLocation::KeepWorldPosition);
(this) reference a class that extends AActor()
Thanks for any help!
1 Like
Hello, megatlantis
This change was made in order to simplify UObject creation.
With NewObject, your code will look something like this:
UStaticMeshComponent* comp = NewNamedObject<UStaticMeshComponent>(this, *node->GetAttribute("name"));
If you like to learn more about UObject creation, please go here:
Also, if you want to learn more about 4.8 release notes, this might be useful:
Hope this helped!
Have a great day!
1 Like
Thanks you, it’s working fine with this !
wills
(wills)
April 26, 2016, 10:41pm
4
ConstructObject<>
does provide you with more options, but you’re right, there is a compiler warning that suggests it is deprecated.
return NewObject(InParent, Class, Name, Flags);
Dexgecko
(Dexgecko)
July 23, 2018, 5:46am
6
I think NewNamedObject is deprecated now too in favor of NewObject
Probezeit
(Probezeit)
June 29, 2022, 7:25pm
7