2015-09-12 4 views
0

Я пытаюсь создать волшебное приложение для математики, используя единство 3d для цели обучения. Я не мог видеть, что случайная математическая функция вызывается в нижнем коде исходного кода.функция кнопки onclick, похоже, не вызывает функцию randommath

Когда я нажимаю кнопку воспроизведения, я могу получить случайные числа, но как только я нажму кнопку true или ложную кнопку, я не вижу вызываемую функцию randommath.

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class GameControllerScript : MonoBehaviour 
{ 
    public Text MathText; 
    public Text ResultText; 

    private int rightNumber; 
    private int leftNumber; 
    private int TrueResultNumber; 
    private int FalseResultNumber; 

    void Start() 
    { 
     RandomMath(); 
    } 

    void RandomMath() 
    { 
     rightNumber = Random.Range (0, 10); 
     leftNumber = Random.Range (0, 10); 

     int mOperator = Random.Range (0,2); 
     switch (mOperator) { 
     case 0: 
      TrueResultNumber = leftNumber + rightNumber; 
      MathText.text = leftNumber.ToString() + "+" + rightNumber.ToString(); 
      FalseResultNumber = TrueResultNumber + Random.Range (-2, 2); 
      ResultText.text = "=" + FalseResultNumber.ToString(); 
      break; 
     case 1: 
      TrueResultNumber = leftNumber + rightNumber; 
      MathText.text = leftNumber.ToString() + "-" + rightNumber.ToString(); 
      FalseResultNumber = TrueResultNumber + Random.Range (-2, 2); 
      ResultText.text = "=" + FalseResultNumber.ToString(); 
      break; 
     case 2: 
      TrueResultNumber = leftNumber + rightNumber; 
      MathText.text = leftNumber.ToString() + "*" + rightNumber.ToString(); 
      FalseResultNumber = TrueResultNumber + Random.Range (-2, 2); 
      ResultText.text = "=" + FalseResultNumber.ToString(); 
      break; 
     default: 
      break; 
     } 
    } 
    public void OnTrueButtonClick() 
    { 
     if (TrueResultNumber == FalseResultNumber) { 
      RandomMath(); 

     } 
     else { 
     } 
    } 
    public void OnFalseButtonClick() 
    { 

     if (TrueResultNumber != FalseResultNumber) { 
      RandomMath(); 
     } else { 
     } 
    } 
} 

ответ

0

Похоже, вам нужно настроить событие click в инспекторе. если приведенный выше сценарий находится на игровом объекте, попробуйте следующее:

нажмите на кнопку в инспекторе, щелкните знак +, чтобы добавить событие click. перетащите объект со сценарием в слот и убедитесь, что выбран редактор и время выполнения. выбрать функцию GameControllerScript.OnFalseButtonClick

повторить на другой кнопке, но использовать OnTrueButtonClick

он должен работать после этого.

0

Вы назначили действие для кнопки?

Имя вашего метода не имеет отношения к имени кнопок, поэтому вам необходимо назначить связанный метод самостоятельно.

Смотрите это видео, 5:35;)

https://youtu.be/kQ2Qc_0MIyI?t=335

0

У меня нет Unity3D, но есть кто-то на этом форуме один раз, кто обнаружил, что их переменные были из области видимости вызывает определенные операции на не возникает. Оказалось, что эта структура, очевидно, использует несколько потоков. Они смогли определить это, сделав переменные уровня класса статическими. Это предоставляет одни и те же переменные для всех потоков. Я просто заметил, что ваша операция OnTrueButtonClick() имеет условия, в которых также используются нестатические переменные класса. Это было на уровне Am I losing scope within IF statements?

Было бы целесообразно.

 Смежные вопросы

  • Нет связанных вопросов^_^