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
相关产品推荐
相关产品推荐

