首页 > 解决方案 > 被“子弹”击中时,Unity 3d 分数会逐渐增加

问题描述

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

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

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;
    }
}

标签: c#unity3dcount

解决方案


创建一个包含静态分数值的分数管理器。并将此脚本附加到另一个游戏对象(您不会破坏):

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(); 
      }
   }
} 

当您想提高分数时,只需通过以下方式调用它:

ScoreManager.score++;

推荐阅读