You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity游戏分数更新时增量拼接而非数值相加问题求助

Unity答题场景分数累加异常问题

问题描述

我有一个Unity游戏场景,可正确将分数传递至答题场景。我希望在答题场景中,用户答对题目时奖励整数变量pointsForCorrectQuizAnswer对应的分值。例如玩家进入答题环节时初始分数为1000,pointsForCorrectQuizAnswer取值为250,预期新分数显示为1250,但实际显示为1000250,即便我尝试将int类型的pointsForCorrectQuizAnswer转换为字符串也未解决该问题。

出错的原始代码

public class AnswerScript : MonoBehaviour
{
    public bool isCorrect = false;
    public QuizManager quizManager;
    // 答对选择题奖励的分数
    public int pointsForCorrectQuizAnswer = 250; 

    public void Answer()
    {
        if(isCorrect)
        {
            Debug.Log("Correct answer.");
            quizManager.Correct();
            quizManager.TxtScore.text += pointsForCorrectQuizAnswer.ToString();
            // quizManager.TxtScore.text += 250.ToString();
        }
    }
}

问题根因

你使用的+=操作符针对两个字符串会执行拼接逻辑,而非数值加法:TxtScore.text本身是字符串类型,你把奖励分数转为字符串后用+=拼接,自然就会出现"1000"+"250"="1000250"的问题。

修复思路

先把文本框中存储的分数字符串解析为整数,和奖励分数做数值加法得到新分数后,再转为字符串赋值给文本框即可。

修复后可正常运行的代码

public class AnswerScript : MonoBehaviour
{
    public bool isCorrect = false;
    public QuizManager quizManager;
    // 答对选择题奖励的分数
    public int pointsForCorrectQuizAnswer = 250; 

    public void Answer()
    {
        if(isCorrect)
        {
            Debug.Log("Correct answer.");
            quizManager.Correct();
            var oldScore = int.Parse(quizManager.TxtScore.text);
            var newScore = oldScore + pointsForCorrectQuizAnswer;
            quizManager.TxtScore.text = newScore.ToString();
        }
    }
}

内容的提问来源于stack exchange,提问作者WPWPWP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:54:04