Parameter Collection for Character Movement?

I have a large number of characters with similar and dissimilar parameters for the Character Movement Component. It would be nice if I could have a collection of parameters like for materials which I could then apply at once in Blueprint rather than setting all of the parameters for each character individually. That would also hep ensure consistency so that I don’t forget any setting somewhere. Does anyone know a way to do this? I even tried spawning a new character to copy his movement component entirely, but there is no set function for the character’s component reference, sadly.

The documentation says about **Collection Parameters **“These are groups of parameters that can easily be reused by many different assets such as Materials, Blueprints, and much more.” (Material Parameter Expressions in Unreal Engine | Unreal Engine 5.2 Documentation) But it doesn’t explain how to use them for Blueprint parameters or Component parameters. It just gives a link to using them for Materials. I really wish I could use this functionality to easily apply a set of parameters to the Character Movement Component en masse in game.

Material Parameter Collections are designed for materials (clue is in the name), so that different Shaders can update themselves from ‘Global’ properties without the user having to create and manage hundreds of dynamic material instances. (For example, shaders can be made to be more reflective if it’s “raining” etc.)

There isn’t any method for setting a huge swathe of properties on Blueprints or Objects - but there’s nothing stopping you from implementing it yourself. In C++ you could use static variables (or a static class with exposed variables), or in BP/C++ you can create a singleton object and have the Blueprints / Movement Components talk to it and ask for the parameters. Either that or you manually iterate the objects. That’s a pretty standard approach.

Hard to say what the best approach is without knowing exactly what you’re trying to do.

Well, it would be a lot easier to do what I want if I could just say Character->SetMovementComponent(…). I don’t understand why we have get functions but no set functions for the components. I guess I will have to do as you suggest and implement structures and long ugly set functions.

I wonder if the engine would explode if I were to change the declaration in Character.h and got rid of the “BlueprintReadOnly” property and/or made the variable public…

UPROPERTY(Category=Character, VisibleAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess = “true”))
UCharacterMovementComponent* CharacterMovement;