我正在统一构建一个简单的计算器应用程序。我的变量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);
}
答案 0 :(得分:1)
您必须从Add()方法中删除或更改其inputBox.text = "0";
的位置。您错误地将变量设置为0
答案 1 :(得分:1)
我的第一个猜测是您实际上是在创建计算器对象的新实例。 firstNumber
在新实例上将采用默认值零。
如果使用Visual Studio,则可以通过使用“生成对象ID”功能来检查情况是否如此。另外,您可以使用一种如下所述的技术:How to print object ID?检查它们是否实际上是同一对象实例。
我对统一引擎本身并不熟悉,但是如果某种绑定代码负责生成新实例,我不会感到惊讶。
答案 2 :(得分:0)
您正在用零初始化文本字段,只要调用它,结果就为零