添加分数不停止c#

时间:2017-09-04 15:15:48

标签: c# unity3d

我尝试在我的分数变量中添加一些分数但不停止为其添加分数。 我试图制作一个变量bool,但它没有解决问题。 我不知道我想念那里。 这是我的代码

using UnityEngine;
using System.Collections;

public class certo2_3 : MonoBehaviour {
public static bool onoffrune;

void OnCollisionEnter()
{
    this.GetComponent<BoxCollider> ().enabled = false;
    this.GetComponent<SpriteRenderer> ().enabled = false;

    //Debug.Log (ScoreSystem.frutos);
    //Invoke ("Respawn",5);
}

void Respawn()
{
    this.GetComponent<BoxCollider> ().enabled = true;
    this.GetComponent<SpriteRenderer> ().enabled = true;
}

// use this for initialization
void Start () {
    this.GetComponent<BoxCollider> ().enabled = false;
    this.GetComponent<SpriteRenderer> ().enabled = false;

}

// update is called once per frame
void Update () {
    if (triggerrune2_2.certo22 == 1) 
    {
        Respawn();
        scoreplus();
    }

}
public void scoreplus()
{
    onoffrune = true;
    if (onoffrune = true) {
        scoreManager.score += 10;
    }
    onoffrune = false;
}
}

1 个答案:

答案 0 :(得分:1)

您提供的信息非常有限,因此我只能向您展示解决问题的解决方案。我无法确保我的解决方案最适合您的整体设计,希望它足以告诉您问题是什么以及如何解决它:

void Update () 
{
    if (triggerrune2_2.certo22 == 1) 
    {
        Respawn();
        scoreplus();
        triggerrune2_2.certo22 = 0; // Reset this so it isn't true for subsequent frames.
    }
}

public void scoreplus()
{
    scoreManager.score += 10;
}

请注意,我已将triggerrune2_2.certo22重置为0,因此if语句在后续评估中不会成功。当然,如果triggerrune2_2.certo22是正确值,我不知道0会说些什么。希望您能看到逻辑并确定适合您设计的价值。

我想再次强调,这只是许多人可能解决的问题之一。但根据您提供的有限代码,我可以提供所有这些。

如果您想使用onoffrune作为确定是否应该应用分数的方法,您可以这样做:

public onoffrune = false;

void Update () 
{
    if (triggerrune2_2.certo22 == 1 && onoffrune) 
    {
        Respawn();
        scoreplus();
        onoffrune = false;
    }
}

public void scoreplus()
{
    scoreManager.score += 10;
}

请注意,您可能希望onoffrune是一个实例变量,而不是静态的,否则它将适用于MonoBehaviour的所有实例而不是每个实例(也许这就是您想要的我不知道的)