被“子弹”击中时,Unity 3d分数会逐渐增加

时间:2019-04-12 19:04:18

标签: c# unity3d count

我有一些代码应该一次计算一次,一个敌人被“子弹”击中,然后该敌人在碰撞中被摧毁。我的问题是当我击中敌人时,得分上升一个,每当我碰到另一个敌人时,它就不会增加到两个(保持在一个)。

我的画布和文本组件正常工作,并且脚本已附加到敌人身上。

int score=0;
int displayScore=0;
public Text scoreUI;

private void OnCollisionEnter(Collision collision)
{
    GameObject other = collision.gameObject;
    switch (other.tag)
    {
        case "player":
            break;
        case "bullet":
            displayScore++; //Increment the display score by 1

            scoreUI.text = displayScore.ToString(); 
            //Write it to the UI

            Destroy(this.gameObject);
            break;
    }
}

1 个答案:

答案 0 :(得分:2)

创建一个其中具有静态分数值的分数管理器。并将此脚本附加到另一个游戏对象(您不会销毁):

##### Activate conda env ######
[[ -n $CONDA_ENV ]] && conda activate $CONDA_ENV

当您想增加分数时,只需致电:

public class ScoreManager: MonoBehaviour { 

   public static int score;
   private int displayScore;
   public Text scoreUI;

   void Start(){
      score = 0;
      displayScore = 0;
   }

   void Update(){
      if(score != displayScore){
         displayScore = score;
         scoreUI.text = displayScore.ToString(); 
      }
   }
}