所以我在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 salt对象成为它的子对象,这样我就可以删除SaltManager,所有的孩子也会消失,但是我可以&#39 ;弄清楚如何做到这一点,无论如何它看起来并不太有效。任何帮助将不胜感激!谢谢!布兰登
答案 0 :(得分:2)
我建议您通过重新加载场景来重置游戏,这样就可以确切地了解它在开始时的情况。您可以像这样加载场景:
SceneManager.LoadScene("SceneName");
或使用场景索引:
SceneManager.LoadScene(sceneIndex);
我可以看到你保持高分,这可能就是你没有这样做的原因。你应该像PlayerPrefs一样保存你的高分:
PlayerPrefs.SetInt("High Score", 10);
然后您可以轻松地将其取回:
PlayerPrefs.GetInt("High Score");
这实际上可以节省您的分数,这样即使他们退出游戏并返回,您仍然可以检索它。 More info on PlayerPrefs