Unity 3d Score увеличивается постепенно при попадании "пули" - PullRequest
1 голос
/ 12 апреля 2019

У меня есть какой-то код, который должен подсчитывать, по одному за раз, когда враг был поражен «пулей», а затем этот враг уничтожен при столкновении. Моя проблема в том, что когда я поражаю врага, счет увеличивается на единицу, и всякий раз, когда я бью другого врага, он не увеличивается до двух (он остается на одном)

У меня работают компоненты Canvas и Text, а сценарий прикреплен к врагу.

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 Ответ

2 голосов
/ 12 апреля 2019

Создайте менеджер оценок со статическим значением в нем.И прикрепите этот скрипт к другому игровому объекту (который вы не уничтожите):

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++;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...