onclick按钮功能似乎不会调用randommath函数

时间:2015-09-12 14:45:25

标签: c# unity3d unityscript buttonclick

我正在尝试使用统一3d创建一个怪异的数学应用程序用于学习目的。 我看不到在下面的源代码中调用随机数学函数。

当我点击播放按钮时我可以得到随机数字,但是一旦我点击了真实按钮或虚假按钮,我就看不到被调用的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 {
        }
    }
}

3 个答案:

答案 0 :(得分:0)

看起来您需要在检查器中设置click事件。如果以上脚本在游戏对象上,请尝试以下

在检查器中单击您的按钮,单击+号以添加单击事件。 将带有脚本的对象拖到插槽中,并确保选择了编辑器和运行时。 选择函数GameControllerScript.OnFalseButtonClick

在另一个按钮上重复,但使用OnTrueButtonClick

它应该在那之后起作用。

答案 1 :(得分:0)

您是否为按钮指定了操作?

您的方法名称与按钮名称没有任何关系,因此您必须自己分配相关方法。

观看此视频,5:35;)

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

答案 2 :(得分:0)

我没有Unity3d,但是在这个论坛上有人发现他们的变量超出范围导致某些操作不会发生。事实证明,这个框架显然使用了多个线程。他们能够通过使类级变量静态来确定这一点。这会向所有线程公开相同的变量。我刚刚注意到你的OnTrueButtonClick()操作有条件使用非静态的类级变量。那是在Am I losing scope within IF statements?

值得一试。