我尝试在我的分数变量中添加一些分数但不停止为其添加分数。 我试图制作一个变量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;
}
}
答案 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的所有实例而不是每个实例(也许这就是您想要的我不知道的)