Правильно сбросить сцену и сохранить счет в Unity

1 BeamerEA [2017-03-20 23:49:00]

Поэтому я делаю игру в Unity, чтобы узнать, как кодировать, и я снова ударил стену. Игра - "уклонение от игры с падающими предметами", и способ создания объектов выглядит следующим образом:

public class Salt : MonoBehaviour {
    public float delay;
    public GameObject salt;

    // Use this for initialization
    void Start () {
        InvokeRepeating("Spawn", delay, delay);
    }
    // Update is called once per frame
    void Spawn () {
        Instantiate(salt, new Vector3(Random.Range(-2.5f, 2.5f), 10, 0), Quaternion.identity);
    }
}

Эта часть кода работает нормально. Проблема возникает, когда соль (падающие предметы) вступает в контакт с игроком. Игра сбрасывается, как и следовало бы, однако соль, которая была на экране, все еще существует, и я не могу понять, как удалить все уже созданные клоны. В принципе, я не могу понять, как очистить объекты, которые уже были созданы, когда проигрыватель проигрывает.

Как я сбросил игру после столкновения:

public class TapToStart : MonoBehaviour {

    public Text highScore;
    public Button startButton;
    public ScoreManager sMan;

    // Use this for initialization
    void Start () {
        Init();
    }

    public void Init() {
        Time.timeScale = 0;
        sMan.SetScore(0);
        highScore.text = "High Score: " + Mathf.Round(sMan.GetHighScore()).ToString();
        startButton.gameObject.SetActive(true);
    }



    public void Pressed() {
        startButton.gameObject.SetActive(false);
        Time.timeScale = 1;
    }
}

Я подумал, что, возможно, создание объекта SaltManager будет работать, а затем просто создать объекты, созданные из сотен, будут такими, чтобы дети могли работать, чтобы я мог просто удалить SaltManager после того, как все дети исчезнут, но я не могу понять, как для этого, и это не кажется слишком эффективным в любом случае. Любая помощь будет принята с благодарностью! Благодарю! -Brandon

android c# unity3d


1 ответ


1 Решение I.B [2017-03-21 00:16:00]

Я бы порекомендовал вам перезагрузить игру, перезагрузив сцену так, чтобы вы точно поняли, как это было в начале. Вы можете загрузить свою сцену так:

SceneManager.LoadScene("SceneName");

Или с индексом сцены:

SceneManager.LoadScene(sceneIndex); 

Я вижу, что вы держите рекорд и, вероятно, почему вы этого не сделали. Вы должны сохранить свой высокий балл с помощью PlayerPrefs следующим образом:

PlayerPrefs.SetInt("High Score", 10);

Затем вы можете легко вернуть его с помощью:

PlayerPrefs.GetInt("High Score");

Это фактически экономит ваш счет, так что, даже если они покинут игру и вернутся, вы все равно сможете ее восстановить. Дополнительная информация о PlayerPrefs.