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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:45:03