unity3d 为什么当我在C# Unity的另一个公共函数中更改“input_second_num”的值时,它没有更改?

kiz8lqtg  于 2022-12-13  发布在  C#
关注(0)|答案(1)|浏览(121)

我需要在calculate字段中写入第二个数字,并在“input_second_num”为真时将其赋值给“second_num”。然后,当我有“first_num”和“second_num”时,就很容易计算这些数字。
在Start()函数中,我将“false”设置为“input_second_num”,以便首先写入“first_num”:

void Start()
{
    btnAction = btn.GetComponent<Text>().text;
    btnNumber = btn.GetComponent<Text>().text;
    input_second_num = false;

{
  1. btnAction -是按钮上的文字(“+"、“-"、“*”或“/”)
  2. btnNumber -是按钮上的数字(“1”、“2”、“3”....)
    然后,我写入第一个数字,并将其赋值给Input()函数中的(长整型)“first_num”:
public void Input()
{
    if (calculate_label.text.Length < 15 && !input_second_num)   
    {

        if (calculate_label.text == "0")
        {
            calculate_label.text = btnNumber;
            first_num = long.Parse(calculate_label.text);
            
        }
        else 
        {
            calculate_label.text += btnNumber;
            first_num = long.Parse(calculate_label.text);
            
        }

    }
}

为了写入第二个数字,我在Calculate()函数中将“input_seconв_num”的值更改为“true”,该函数附加到操作按钮上。也就是说,当单击按钮“input_second_num”时,它等于“true”,并且计算字段等于空行:

public void Calculate() 
{
    action = btnAction;
    input_second_num = true;
    calculate_label.text = " "; 
}

对于“second_num”,我编写了构造“If”来检查“input_second_num”的值--如果它等于“true”,那么我们可以编写second_num并将其赋值给(长)“second_num”

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);

    }
}

编辑:
我把赋值修饰符input_second_num改成了static,因为我知道我需要为所有对象改变input_second_num的值,而static帮了我。
就像这样:

private static input_second_num;
s5a0g9ez

s5a0g9ez1#

这是很难回答的代码张贴和我的初步观察需要更多的将适合一个评论。

  • 您发布了两个具有相同签名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;
没有再次分配数据类型,我看不出您的代码是如何构建而没有问题的。
请重新审视您的问题,并向我们展示更多的类代码。

相关问题