I have some Actor. This actor represents all the items in my game that can be picked up.
In the constructor I use
So that it has some default mesh, in case something breaks later on. Hopefully no one ever sees this mesh.
At some point I instantiate this dynamically created actor. Then set a value on it
Inside SetItem(item), I go and find out everything extra this should have on it, perhaps add some more components, and update it's mesh.
ItemDB is basically powered by an external json that will eventually have some mod-ability support for people to make new items.
This all works just fine for now.
But then I see posts like this
https://forums.unrealengine.com/development-discussion/c-gameplay-programming/28489-umg-and-inventory-slots?57678-UMG-and-Inventory-slots=&viewfull=1
"The reason is that once you start cooking your game, asset references defined in this way are completely invisible to the cooker. Cooking only cares about assets you're actually using, otherwise you'd end up shipping cooked games with piles of data that isn't actually used anywhere. "
Is this going to be a problem for me or is there a better way of doing this?
Is there a way to make sure I am cooking in the relevant assets? Do I need to make a dummy object that just loads all my meshes(and other assets somewhere)?
Code:
class APickupActor: public AActor
Code:
static ConstructorHelpers::FObjectFinder<UStaticMesh> DefaultSphereVisualAsset(TEXT("/Game/Defaults/BasicSphere.BasicSphere")); ... m_meshComponent->SetStaticMesh(DefaultSphereVisualAsset.Object);
At some point I instantiate this dynamically created actor. Then set a value on it
Code:
somePickupActor.SetItem(item);
Code:
// This queries a data asset/json/file for what the mesh should be. // For example, newMeshString = "/Game/Items/GoldCoin.GoldCoin" FString newMeshString = ItemDB.GetMeshString(item); auto newMesh = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(), NULL, TEXT(newMeshString))); m_meshComponent->SetStaticMesh(newMesh);
This all works just fine for now.
But then I see posts like this
https://forums.unrealengine.com/development-discussion/c-gameplay-programming/28489-umg-and-inventory-slots?57678-UMG-and-Inventory-slots=&viewfull=1
"The reason is that once you start cooking your game, asset references defined in this way are completely invisible to the cooker. Cooking only cares about assets you're actually using, otherwise you'd end up shipping cooked games with piles of data that isn't actually used anywhere. "
Is this going to be a problem for me or is there a better way of doing this?
Is there a way to make sure I am cooking in the relevant assets? Do I need to make a dummy object that just loads all my meshes(and other assets somewhere)?
Comment