Переменная обнуляется - PullRequest
       1

Переменная обнуляется

0 голосов
/ 08 января 2019

Я создаю простое приложение калькулятора в единстве. Моей переменной 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 голосов
/ 08 января 2019

Мое первое предположение состоит в том, что вы на самом деле создаете новый экземпляр вашего объекта калькулятора. firstNumber будет принимать значение по умолчанию ноль в новом экземпляре.

Вы можете проверить, так ли это на самом деле, используя функциональность «make object ID», если используете Visual Studio. В качестве альтернативы вы можете использовать метод, описанный здесь: Как напечатать идентификатор объекта? , чтобы проверить, являются ли они на самом деле одним и тем же экземпляром объекта.

Я не знаком с самим механизмом Unity, но я не удивлюсь, если какой-то код связывания отвечает за создание нового экземпляра.

0 голосов
/ 08 января 2019

См. Изображение для ответа

Вы инициализируете текстовое поле с нуля, и всякий раз, когда оно вызывается, результат становится нулевым

0 голосов
/ 08 января 2019

Вы должны удалить или изменить его позицию inputBox.text = "0"; из метода Add (). Вы устанавливаете переменные в 0 по ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...