В игре Block Breaker я пытаюсь загрузить уровни, когда все кирпичи уничтожены.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 В игре Block Breaker я пытаюсь загрузить уровни, когда все кирпичи уничтожены.

Сообщение Anonymous »

Я создал игру с разбиением блоков и написал некоторый код, чтобы при уничтожении всех кирпичей в сцене загружался следующий уровень.
Это работает нормально, но есть ошибка! Когда я проигрываю, прежде чем уничтожить все кирпичи, а затем нажимаю «играть снова», статическая переменная, отвечающая за подсчет кирпичей в сцене, не сбрасывается в 0! Он сохраняет количество кирпичей до того, как я проиграл, и прибавляет к нему количество кирпичей в новой сцене! Таким образом, вместо того, чтобы возвращать, например, 24 (что является правильным количеством кирпичей в сцене), он возвращает 35 (11 + 24).
Как я могу это исправить?
Вот код, который я использую. Во-первых, кирпичный сценарий:
public int maxHits;
public int timesHit;
public Sprite[] hitSprites;
public static int breakableCount = 0;

private bool isBreakable;
private LevelManager levelManager;
// Use this for initialization
void Start () {
isBreakable = (this.tag == "Breakable");
if(isBreakable){
breakableCount++;
}
print (breakableCount);
timesHit = 0;
levelManager = GameObject.FindObjectOfType ();
}
void OnCollisionEnter2D(Collision2D collision) {
if (isBreakable) {
HandleHits ();
}
}

void HandleHits(){
//TODO remove the print!!
print ("collison");
timesHit++;
if (timesHit >= maxHits) {
breakableCount--;
print (breakableCount);
levelManager.BrickDestroyed ();
Destroy (gameObject);
} else {
LoadSprite ();
}
}
// Update is called once per frame
void Update () {

}

//TODO Remove this when player can WIN
void NextLevel(){
levelManager.LoadNextLevel ();
}

void LoadSprite(){
int spriteIndex = timesHit - 1;
this.GetComponent ().sprite = hitSprites [spriteIndex];
}

а вот скрипт LevelManager, который я использую для управления уровнями:
public void LoadLevel (string name) {
Debug.Log ("level change requested for : " + name);
Application.LoadLevel (name);
}
public void ExitRequest() {
Debug.Log ("Exit game requested");
Application.Quit ();
}
public void LoadNextLevel () {
Application.LoadLevel (Application.loadedLevel + 1);
}
public void BrickDestroyed () {
if(Brick.breakableCount

Подробнее здесь: https://stackoverflow.com/questions/395 ... -destroyed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Php
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Apache
    0 Ответы
    111 Просмотры
    Последнее сообщение Anonymous
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Php
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Php
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как отследить и обнаружить, когда все препятствия уничтожены в игре Brick Breaker? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»