将一个场景用于无限关卡
Using one scene for infinite levels
我正在尝试制作一个只有一个场景的游戏,该场景将用于无数个关卡,直到玩家输掉为止。我所有的代码目前都在 GameController 脚本中,我拥有它以便当关卡完成时,玩家将按下一个键,关卡的整数将递增,并加载相同的场景。
void Start()
{
gamePlaying = false;
currLevel = 0;
BeginGame();
}
void Update()
{
if (Input.GetKeyUp(KeyCode.Return))
{
currLevel++;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
我有这个脚本和一个附加到 GameController 游戏对象的 DontDestroyOnLoad 脚本。
当打印到控制台时,这个 currLevel 变量保持在 0;但是,它正在检查器中更新。我做错了什么,这是设置这个项目的好方法吗?谢谢!
有一些方法可以实现这一点,但我建议不要重新加载场景,而是要有一个包含要销毁的对象的列表或容器,并在加载下一个场景时销毁这些对象并创建新的。您可以在这段时间内轻松制作一个加载屏幕,甚至可以在您注意到旧场景即将结束时更好地预先缓冲新场景。
因此,与其重新加载场景,不如销毁不需要的对象并创建您需要的对象。根据您的需要,您甚至可以重复使用一些作为地板,例如,只需更改关卡的颜色即可。如前所述,一切都取决于您的用例。
我正在尝试制作一个只有一个场景的游戏,该场景将用于无数个关卡,直到玩家输掉为止。我所有的代码目前都在 GameController 脚本中,我拥有它以便当关卡完成时,玩家将按下一个键,关卡的整数将递增,并加载相同的场景。
void Start()
{
gamePlaying = false;
currLevel = 0;
BeginGame();
}
void Update()
{
if (Input.GetKeyUp(KeyCode.Return))
{
currLevel++;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
我有这个脚本和一个附加到 GameController 游戏对象的 DontDestroyOnLoad 脚本。
当打印到控制台时,这个 currLevel 变量保持在 0;但是,它正在检查器中更新。我做错了什么,这是设置这个项目的好方法吗?谢谢!
有一些方法可以实现这一点,但我建议不要重新加载场景,而是要有一个包含要销毁的对象的列表或容器,并在加载下一个场景时销毁这些对象并创建新的。您可以在这段时间内轻松制作一个加载屏幕,甚至可以在您注意到旧场景即将结束时更好地预先缓冲新场景。
因此,与其重新加载场景,不如销毁不需要的对象并创建您需要的对象。根据您的需要,您甚至可以重复使用一些作为地板,例如,只需更改关卡的颜色即可。如前所述,一切都取决于您的用例。