【发布时间】:2017-03-21 16:03:26
【问题描述】:
所以我在 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 对象会起作用,然后让实例化的 salt 对象成为它的子对象就可以了,这样我就可以删除 SaltManager 之后所有的子对象也会消失,但是我不能弄清楚如何做到这一点,无论如何它似乎不太有效。任何帮助将不胜感激!谢谢! -布兰登
【问题讨论】:
-
如何重置游戏?
-
刚刚将编辑添加到帖子中!
-
为什么不通过重新加载场景来重置游戏,这样您将拥有与开始时完全相同的场景。除非它不是你真正的选择。
-
我试过了,但是当我尝试这种方式时,HighScore 重置为 0。有没有办法制作 HighScore 商店?
-
当然把你的高分保存在
PlayerPrefs.SetInt("High Score", 10);然后你可以很容易地用PlayerPrefs.GetInt("High Score")找回它,这样即使他们关闭你的游戏并回来他们仍然会有同样的高分。跨度>