Okay, this is probably a dumb question but I haven’t been able to figure out how to do this…
I’ve created a custom component. When I add it to an actor blueprint, I want to be able to select the component and see all of its properties on the details panel.
Here is the code I used to create a custom component:
Here is an example of what I want the component details to look like. I took a screen grab from the ParticleSystem Component. Notice how all of the various component categories are all neatly laid out inside the details panel?
This is what I get with my component. It’s just a drop down menu which contains my component. If I want to access any of its properties, I need to expand each nested category manually. This is annoying.
So, how do I get my custom component details to be displayed like the component details in the out-of-the-box components? Am I missing something super simple with the UCLASS meta properties?
How have you added your component to your actor?
If you’ve declared a UFuzeComponent UPROPERTY inside a C++ actor class, you should make the property VisibleAnywhere, rather than EditAnywhere.
It may also be that your use of EditInlineNew is causing this. Is there a particular reason you’ve included this specifier? I’ve never used this with components, and to be honest I’m not sure it’s intended, since components already have a dedicated way of being created within the editor.
Aha! This is exactly what I was looking for. Thank you so much!
It’s oddly unintuitive. I thought that if it was “visible anywhere”, it means its a read only property and that wasn’t what I wanted, so “edit anywhere” would be closer to what I wanted. But, visible anywhere seems to let you edit the properties anyways. Interesting…
I have no idea what “EditInlineNew” does, but I saw it being used elsewhere in the code of other components and I thought I’d add it in to see if it did what I was hoping to get. I still don’t know what it does. The comment in the code says,
Yep, it’s analogous to the const pointer/pointer to const distinction in c++. With UObject properties, the property is actually a pointer/reference, so being able to edit the property is taken to mean you can modify the reference - assign a completely different object to the property. Visible means you can’t do that, but you can access the referenced object, and if its own properties are editable, then you can still edit them.
As for EditInlineNew, as it happened I came across it being used in engine components just after posting, so yep that is fine. I have used it for non-component UObject derived types. In conjunction with the ‘Instanced’ specifier on a UPROPERTY of the given class type, it allows you to construct a new object directly within the editor details panel, where otherwise you’d only be able to assign an object that already exists.