Правильно сбросить сцену и сохранить счет в 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.