C# 该数字在每次单击时重复随机化

C# 该数字在每次单击时重复随机化,c#,random,unity3d,C#,Random,Unity3d,我目前正在开发一款小型游戏,该游戏围绕数字随机化和分数分配展开,具体取决于显示的数字是否是本例中“x”的倍数3 然而,我有一个问题,因为出于某种原因,每当玩家点击随机,它会随机几次完全抛出我的分数系统 到目前为止,我已尝试通过以下方法解决此问题: yield return new WaitForEndOfFrame(); 然而,这证明是徒劳的,因为它没有帮助 如果你们中的任何一位能够解释为什么会发生这种情况,我们将不胜感激 正在使用的代码 void Awake () { randomN

我目前正在开发一款小型游戏,该游戏围绕数字随机化和分数分配展开,具体取决于显示的数字是否是本例中“x”的倍数3

然而,我有一个问题,因为出于某种原因,每当玩家点击随机,它会随机几次完全抛出我的分数系统

到目前为止,我已尝试通过以下方法解决此问题:

yield return new WaitForEndOfFrame();
然而,这证明是徒劳的,因为它没有帮助

如果你们中的任何一位能够解释为什么会发生这种情况,我们将不胜感激

正在使用的代码

void Awake ()
{
    randomNumber = Random.Range (0, 36);
}

void Start()
{
    mycam = Camera.main;
}

void FixedUpdate()
{
    StartCoroutine(Selection ());

    thisAnswer.text = randomNumber.ToString ();
}

// Update is called once per frame

void Update ()
{
    if (CorrectCount == 5) 
    {
        PlayerPrefs.SetInt ("MiniScore", miniScore);
        Destroy (GameObject.Find ("Killswitch"));
    }
}

IEnumerator Selection ()
{
    Ray ray = mycam.ScreenPointToRay (Input.mousePosition);

    if (Input.GetKey (KeyCode.Mouse0)) 
    {
        if (Physics.Raycast (ray, out hit)) 
        {
            if(hit.transform.tag == "answer") 
            {
                if (System.Convert.ToInt32(thisAnswer.text) % 3 == 0) 
                {
                    miniScore = miniScore + 100;
                    CorrectCount = CorrectCount + 1;
                    yield return new WaitForEndOfFrame();
                    randomNumber = Random.Range (0, 36);
                    Debug.Log (miniScore.ToString());
                } 
                else if (System.Convert.ToInt32(thisAnswer.text) % 3 != 0) 
                {
                    if (miniScore > 50) 
                    {
                        miniScore = miniScore - 50;
                    } 
                    else if (miniScore < 50) 
                    {
                        miniScore = 0;
                    }
                    Debug.Log (miniScore.ToString ());
                    yield return new WaitForEndOfFrame();
                    randomNumber = Random.Range (0, 36);
                }
            }
        }
    }
}
void Awake()
{
随机数=随机范围(0,36);
}
void Start()
{
mycam=Camera.main;
}
void FixedUpdate()
{
开始例行程序(选择());
thisAnswer.text=randomNumber.ToString();
}
//每帧调用一次更新
无效更新()
{
如果(CorrectCount==5)
{
PlayerPrefs.SetInt(“minicore”,minicore);
销毁(GameObject.Find(“Killswitch”);
}
}
IEnumerator选择()
{
光线=mycam.screenpointoray(输入.鼠标位置);
if(Input.GetKey(KeyCode.Mouse0))
{
if(Physics.Raycast(光线,外击))
{
if(hit.transform.tag==“应答”)
{
if(System.Convert.ToInt32(thisAnswer.text)%3==0)
{
miniScore=miniScore+100;
CorrectCount=CorrectCount+1;
返回新的WaitForEndOfFrame();
随机数=随机范围(0,36);
Log(miniScore.ToString());
} 
else if(System.Convert.ToInt32(thisAnswer.text)%3!=0)
{
如果(miniScore>50)
{
minicore=minicore-50;
} 
否则,如果(miniScore<50)
{
miniScore=0;
}
Log(miniScore.ToString());
返回新的WaitForEndOfFrame();
随机数=随机范围(0,36);
}
}
}
}
}

我怀疑这里发生的是这行代码

if (Input.GetKey (KeyCode.Mouse0)) 
一旦用户按下鼠标按钮,GetKey就会执行多次,只要按钮按下,GetKey就会返回true(这将持续几帧),因此您可以尝试

if (Input.GetKeyUp (KeyCode.Mouse0)) 
这应该只在释放鼠标按钮时触发一次

退房