Color interpolation doesnt work on tick

Ok so looking at the debug info it kept reverting to the source color. You need to override the source with the output from the temp color.
Normally in timeline lerps you don’t change one of the lerp parameters at runtime but here during tick it seems to be necessary.

Example actor that lerps successfully between two set colors at a certain speed.

Header

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "ColorChanger.generated.h"

UCLASS()
class YOUR_API AColorChanger : public AActor
{
	GENERATED_BODY()
	
public:	

	AColorChanger();

protected:

	virtual void BeginPlay() override;


public:	

	virtual void Tick(float DeltaTime) override;

	UPROPERTY(EditAnywhere,BlueprintReadWrite)
	FLinearColor SourceColor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FLinearColor TargetColor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float timeToChange = 1.0f;

	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	FLinearColor tempColor;
};

cpp

#include "ColorChanger.h"
#include "Math/UnrealMathUtility.h" 


AColorChanger::AColorChanger()
{

	PrimaryActorTick.bCanEverTick = true;

}

void AColorChanger::BeginPlay()
{
	Super::BeginPlay();
	tempColor = SourceColor;
}

// Called every frame
void AColorChanger::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
		
	tempColor = FMath::CInterpTo(tempColor, TargetColor, GetWorld()->DeltaTimeSeconds , timeToChange);
	GEngine->AddOnScreenDebugMessage(1, 1, FColor::Cyan, tempColor.ToString()); // for debuging
}