This stopped working for me in 4.23 so I looked into it and ended up with this
UFUNCTION(BlueprintPure, Category = Niagara, meta = (DisplayName = "Set Niagara Variable (UTexture)"))
void UHTMLBlueprintFunctionLibrary::SetNiagaraVariableTexture(class UNiagaraComponent* niagara, const FString& InVariableName, UTexture* InValue)
{
if (!niagara || !InValue) return;
FName VarName = FName(*InVariableName);
FNiagaraUserRedirectionParameterStore& overrideParameters = niagara->GetOverrideParameters();
FNiagaraVariable niagaraVar = FNiagaraVariable(FNiagaraTypeDefinition(UNiagaraDataInterfaceTexture::StaticClass()), VarName);
UNiagaraDataInterfaceTexture* current = (UNiagaraDataInterfaceTexture*)overrideParameters.GetDataInterface(niagaraVar);
UNiagaraDataInterfaceTexture* data = NewObject<UNiagaraDataInterfaceTexture>();
data->Texture = InValue;
data->CopyTo(current);
}
Feels wrong and I’m sure it is but it works for now.