unity3d 如何在Unity C#中更改附加到多个游戏对象的同一脚本中的布尔值?

beq87vna  于 2023-01-09  发布在  C#
关注(0)|答案(1)|浏览(142)

我正在Unity中创建一个计算器,遇到了一个问题。因此我需要更改bool值以写入计算器的第二个数字。
我的脚本附加到场景中的所有按钮(游戏对象)。
我需要将此值更改为true以写入计算器的第二个数字。

private bool input_second_num;    

public void Input(){

    if (calculate_label.text.Length < 15 && !input_second_num)   
    {
        calculate_label.text += btnNumber;
        first_num = long.Parse(calculate_label.text);
    }
    esle if (calculate_label.text.Length < 15 && input_second_num)
    {
        calculate_label.text += btnNumber;
        second_num = long.Parse(calculate_label.text);
    }
}

//Calls when clicking on action button
public void Action()
{
    input_second_num = true;
    calculate_label.text = " ";
}

起初input_second_numfalse,首先写入第一个数字。当我在另一个函数中将input_second_num更改为true时,单击操作按钮,然后尝试输入第二个数字,input_second_num无论如何都是假的,我正在为first_number键入数字。
为什么会这样?

j8yoct9x

j8yoct9x1#

这很难用发布的代码来回答,我最初的观察需要更多的东西,而不是一条评论。

  • 您发布了两个具有相同签名public void Input()的函数,我看不出这段代码是如何构建的;因此,我必须假设它们是在不同的类类型中声明的。
  • 此函数不正确:
public void Input()
  {
      else if (calculate_label.text.Length < 15 && input_second_num)
      {

          calculate_label.text += btnNumber;
          second_num = long.Parse(calculate_label.text);
          print("Second: " + second_num);

      }
  }

您正在使用else启动if块语句-是否缺少代码?

  • 您声明将input_second_num声明为

private static input_second_num;
没有再次分配数据类型,我看不出您的代码是如何毫无问题地构建的。
请重新考虑您的问题,并向我们展示更多的类代码。

相关问题