[英]Correctly reset Scene and keep score in Unity
因此,我正在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對象起作用,然后讓Instantiated鹽對象成為它的子對象就可以了,這樣我就可以刪除SaltManager,然后所有子對象也消失,但是我不知道怎么做這樣做,反正似乎並不太有效。 任何幫助將不勝感激! 謝謝! 布蘭登
我建議您通過重新加載場景來重置游戲,以使它完全像開始時一樣。 您可以像這樣加載場景:
SceneManager.LoadScene("SceneName");
或與場景索引:
SceneManager.LoadScene(sceneIndex);
我可以看到您保持着高分,這可能就是為什么您沒有那樣做的原因。 您應該這樣保存PlayerPrefs的高分:
PlayerPrefs.SetInt("High Score", 10);
然后,您可以輕松地將其恢復為:
PlayerPrefs.GetInt("High Score");
這實際上可以保存您的得分,這樣即使他們退出游戲並回來了,您仍然可以找回它。 有關PlayerPrefs的更多信息 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.