This class seems to be doing a ton. I didnt go through all the logic but parts of this seems like it can be split up.
Firstly shuffleArray can be made into an extension method, working with any IList, removing it entirely from this file.
2nd thing I notice, answerButtons[whatever] is pretty much only used in combination with GetComponent or GetComponentInChildren. It doesnt seem like you actually need this current script to store the button. The object with the button should have its own script on it, that holds a reference to its button, TMP_Text, and image, and then directly change whats needed.
Example:
- answerButtons[correctAnswer].GetComponent<Image>().color = new Color(0, 150, 0, 255);
+ answerButtons[correctAnswer].ChangeColor(whatever Color here)
And answerButtons would be an array of your own custom class which has a ChangeColor method.