So I have created a separate actor that contains components in use for a headlamp (flashlight) so that I don’t have to have the logic in the player character. See Below Screenshot
The problem I am having is that the inherited components panels are all blank no matter what I do. I have tried to look through other forum posts and am still having this problem. See Below Screenshot
I don’t know what component you have highlighted in the screenshot with the Blueprint hierarchy but it is not your the headlamp that you have shown in the other screenshots. You have made an actor (AHeadLamp), and actors cannot be be subobjects of other actors, you have to make a type of class UActorComponent for that. You also need to use CreateDefaultSubobject in the constructor of the actor to create the component, not NewObject.
Yeah I have tried messing around with UActorComponent before. I will check again and see if that fixes the problem. Also the component I have highlighted in the blueprint is a component inside of AHeadLamp.
No, sorry if I didn’t explain it well enough. The parent class of Blueprint (PlayerCharacter) is APlayerCharacter (C++ Class). APlayerCharacter has an AHeadLamp pointer. This class (AHeadLamp) is just used to store components and functions for the headlamp and the APlayerCharacter (C++ Class) initializes all its components. Forgot to include this screenshot
Ok I see now and you can’t do it that way. I am surprised the components even show up at all because the belong to a different actor which you have created in the constructor of your player. As I said previously, you can’t have actors as subobjects of another actor. Either you need to attach your headlamp actor to the character (there is an AttachToActor function) or you need to make it an actor component, but if you keep it as actor it will never show up in the hierarchy like I assume you expected it to.
Okay thanks, Though I still have the problem when it is an ActorComponent. Because my problem is with the other components (See First Screenshot) (LightMid, LightLeft, LightRight, FlashlightArm) since they still need to be initialized in the APlayerCharacter (C++ Class) because actor components don’t have any (RootComponent).
You can still set up and attach scene components in the player character constructor. You should really read up in the documentation on actors and components and their differences. One of the main differences is that actors have a transform so they can exist on their own in the world. If you want your head lamp to be an object that can lay around in the world and that the player can pick up you need to have it as a separate actor. In this case also read up on sockets, these can be used to attach objects at specific locations.
I understand the difference between the two. But as I’m stating that is not my problem. The InitalizeHeadLamp() function is called in the player’s constructor as you can see from the third screenshot from the top. My problem is not that I don’t know how to use them, it is that the details panel is clear for the components from the (AHEADLAMP pointer).
I’m sorry but you obviously don’t know how to use them and I already told you you can’t do it that way, the Blueprint system is simply not intended to be used like that and that’s why you are not seeing anything. You have to initialize the properties of AHeadLamp in it’s own constructor, then make a Blueprint actor from that class, and then you will see the details. Afterwards you can attach the headlamp actor to the player camera at runtime.