Unity计算器如何添加第二数值参数 解决首数值被覆盖问题
问题根因
核心bug是NumberInputOne方法每次被调用时都会覆盖num1的值,同时你没有利用声明的isFirstNum状态区分当前输入的是第一个操作数还是第二个操作数,导致输入运算符之后的数字依然会修改num1的值,最终拼接展示时第一个数就被新输入的数字替换了。
修复优化后的完整代码
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Functions : MonoBehaviour { // 顶部展示面板文本 public Text panelText; // 运算相关变量 string num1 = ""; string num2 = ""; string mOpr = ""; bool isFirstNum = true; // 标记当前是否在输入第一个操作数 // 初始化 void Start() { RestartCal(""); } // 数字输入回调 public void NumberInputOne(string num) { if (isFirstNum) { // 输入第一个数,支持多位数追加 num1 += num; panelText.text = num1; } else { // 输入第二个数,支持多位数追加 num2 += num; panelText.text = num1 + mOpr + num2; } } // 运算符输入回调 public void OperatorInput(string opr) { // 已经输入第一个数才能输入运算符 if (isFirstNum && num1.Length > 0) { mOpr = opr; isFirstNum = false; // 切换为输入第二个数的状态 panelText.text = num1 + mOpr; } } // 重置计算器 public void RestartCal(string cButton) { num1 = ""; num2 = ""; mOpr = ""; isFirstNum = true; panelText.text = ""; } }
主要优化点
- 彻底解决输入第二个数时覆盖第一个数的问题,通过
isFirstNum状态严格区分两个操作数的输入逻辑 - 新增多位数输入支持,原逻辑仅能输入一位数的操作数
- 增加运算符输入合法性判断,未输入第一个数时点击运算符不会生效
- 重置功能同步清空所有状态变量,避免重置后状态错乱
- 清理了代码中未使用的冗余变量,减少无效代码占比
内容的提问来源于stack exchange,提问作者SlipGateFox
相关产品推荐
相关产品推荐

