变量将重置为零

时间:2019-01-08 02:58:55

标签: c# unity3d

我正在统一构建一个简单的计算器应用程序。我的变量firstNumber被分配了一个值,但是在调用Equal方法时将其设置为零。我不知道是什么将其设置回零。我添加了Unity Console的屏幕截图以帮助说明。

private TextMesh inputBox;
private double firstNumber;
private char operation = '+';

void Start()
{

    inputBox = (TextMesh)GameObject.Find("InputBox").GetComponent<TextMesh>();

}

public void nOne()
{
    if (inputBox.text == "0" && inputBox.text != null)
    {
        inputBox.text = "1";
    }
    else
    {
        inputBox.text += "1";
    }
}

public void Add()
{
    firstNumber = double.Parse(inputBox.text); 
    Debug.Log("First num " + firstNumber);

    operation = '+';
    Debug.Log(operation);
    inputBox.text = "0"; 
}

public void Equal()
{
    double secondNumber;
    double result;

    Debug.Log("First Number: " + firstNumber);

    secondNumber = double.Parse(inputBox.text);
    Debug.Log("Second Number: " + secondNumber);

    result = firstNumber + secondNumber;
    Debug.Log("Sum: " + result);

}

3 个答案:

答案 0 :(得分:1)

您必须从Add()方法中删除或更改其inputBox.text = "0";的位置。您错误地将变量设置为0

答案 1 :(得分:1)

我的第一个猜测是您实际上是在创建计算器对象的新实例。 firstNumber在新实例上将采用默认值零。

如果使用Visual Studio,则可以通过使用“生成对象ID”功能来检查情况是否如此。另外,您可以使用一种如下所述的技术:How to print object ID?检查它们是否实际上是同一对象实例。

我对统一引擎本身并不熟悉,但是如果某种绑定代码负责生成新实例,我不会感到惊讶。

答案 2 :(得分:0)

See the Image for the answer

您正在用零初始化文本字段,只要调用它,结果就为零