お世話になります。
個人的には以下の部分が気になりましたが、各変数がどのように使われているのかを追えなかったため憶測になります。
qransu++;
//すべての問題を解いていたらif文に従って終わる。
if(qransu == csvrow)
{
GameScene.transform.position = new Vector2(-40,0);
TMP_Text Ans= GameObject.Find("Canvas/PanelParent/PanelFinish/Ans").GetComponentInChildren<TMP_Text>();
Ans.text= ans+"問正解!!";
ans=0;
// 0を代入してリセットしなくてはならないのはqransu?
qcount=0;
}
以下の役割と変数名を整理してみるとより分かりやすいかもしれません
// 乱数? ランダム表示していたころの名残? 現在の設問番号を示していたもの?
// questionRandomIndex, questionCurrentIndex など
private static int qransu=0;
// 設問進行数?
// questionCount など
private static int qcount=0;
// 正解数
// collectAnswerCount など
private static int ans = 0;
また全然別件ですが、Findは実際の開発ではあまり使わない(処理が重い)ので下記のようにするとよいと思います
// 変更前
TMP_Text Ans= GameObject.Find("Canvas/PanelParent/PanelFinish/Ans").GetComponentInChildren<TMP_Text>();
Ans.text= ans+"問正解!!";
// 変更後
[SerializeField] private TMP_Text ansText; // Componentからアタッチ
ansText.text= ans+"問正解!!";
何卒よろしくお願い申し上げます
Like!