Variables and TMP text not changing

So, I am calling a function from another script, and when I call it, the TMP.text object is supposed to update. Nothing was happening, so I added a string object to test the value change. The string would not update. I added some debug logs to print stuff to see if anything was happening, and they work perfectly fine, but the string will still not change value, and the TMP text wont update

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class ShiTalkEffect : MonoBehaviour, IScreenEffect
{
    [SerializeField]
    private TextMeshProUGUI textTMP;
    [SerializeField]
    private string show;
    public void Outcome(string myMove, string myStance, int myHP, int myStamina, string theirMove, string theirStance, int theirHP, int theirStamina)
    {
        show = "nothing";
        Debug.Log("My move: " + myMove);
        Debug.Log("Their move: " + theirMove);
        if(theirMove.Contains("_hit"))
        {
            show = "Gotcha!";
            Debug.Log("gotcha");
        }
        else
        {
            show = "whatever";
            Debug.Log("whatever");
        }

        textTMP.SetText(show);
    }
}

How and where do you reference this script instance? Are you sure you actually reference the right object? This is one of the most common mistakes. You might have referenced a prefab instead of the actual instance in the scene.

When in doubt just add a context object to your Debug.Log calls. When you click on the debug message in the console Unity will ping that context object which makes it easier to figure out if you’re working with the correct instances:

    Debug.Log("Some text", gameObject);