Mixin Methods🔗

It's possible in script to declare a method on a type outside the class body. This can be useful either to add methods to types from C++, or to separate out functionality from different systems.

To do this, declare a global function with the mixin keyword. The first parameter of the mixin function is filled with the object it is called on.

// Mixin method that teleports any actor
// The first, 'Self' parameter gets set to the actor it is called on
mixin void ExampleMixinTeleportActor(AActor Self, FVector Location)
{
    Self.ActorLocation = Location;
}

void Example_MixinMethod()
{
    // Call the mixin method on an actor
    // Note how ActorReference is passed into Self automatically
    AActor ActorReference;
    ActorReference.ExampleMixinTeleportActor(FVector(0.0, 0.0, 100.0));
}

When creating mixins for structs, you can take a reference to the struct as the first parameter. This allows changes to be made to it:

mixin void SetVectorToZero(FVector& Vector)
{
    Vector = FVector(0, 0, 0);
}

void Example_StructMixin()
{
    FVector LocalValue;
    LocalValue.SetVectorToZero();
}

Note: It is also possible to create mixin functions from C++ with bindings.
See Script Mixin Libraries for details.