Dynamically change a Niagara color curve within C++?

So I have a user parameter in a Niagara called “MyColor” which is a color curve. I am trying to modify the color of this system dynamically during gameplay using the UNiagaraDataInterfaceColorCurve class as follows:

UNiagaraDataInterfaceColorCurve* AShooterCharacter::SetHoverEffectColors()
{
    UNiagaraDataInterfaceColorCurve* ColorCurve = NewObject<UNiagaraDataInterfaceColorCurve>(this);
    if (!ColorCurve)
    {
        UE_LOG(LogTemp, Warning, TEXT("Failed to create Color Curve"));
        return nullptr;
    }

    ColorCurve->RedCurve.Reset();
    ColorCurve->GreenCurve.Reset();
    ColorCurve->BlueCurve.Reset();
    ColorCurve->AlphaCurve.Reset();


        // Define color transition over time
        ColorCurve->RedCurve.AddKey(0.f, 1.f);    // Red
        ColorCurve->GreenCurve.AddKey(0.f, 0.f);  // Green
        ColorCurve->BlueCurve.AddKey(0.f, 0.f);   // Blue
        ColorCurve->AlphaCurve.AddKey(0.f, 1.f);  // Alpha

        ColorCurve->RedCurve.AddKey(1.f, 1.f);
        ColorCurve->GreenCurve.AddKey(1.f, 1.f);
        ColorCurve->BlueCurve.AddKey(1.f, 1.f);
        ColorCurve->AlphaCurve.AddKey(1.f, 1.f);

	ColorCurve->bUseLUT = true;
	ColorCurve->bOptimizeLUT = true;

    return ColorCurve;
}

I then call this function and set the color curve as follows:

				UNiagaraDataInterfaceColorCurve* ColorCurve = SetHoverEffectColors();
				if (ColorCurve)
				{
					MyNiagaraComponent->SetVariableObject(FName("User.MyColor"), ColorCurve);
				}

But the color curve is not changing during gameplay…Am I doing something wrong?