簡體   English   中英

正確重置場景並保持Unity得分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM