#c# #unity3d #random #counter #scene
Вопрос:
Я пытаюсь добавить в свою игру счетчик уровней, который не основан на buildindex, но до сих пор не смог найти способ сделать это. Это приводит к моему следующему вопросу: мне нужно, чтобы счетчик работал независимо от buildindex, потому что я хочу, чтобы уровни воспроизводились в случайном порядке (с возможностью воспроизведения одного и того же уровня). До сих пор, чтобы рандомизировать уровни, я придумал это:
private void NextLevel()
{
SceneManager.LoadScene(SceneManger.buildIndex range(0,x)); //x would be the number of scenes
}
Я еще не закончил достаточное количество сцен, чтобы иметь возможность проверить это, чтобы узнать, работает ли это, если кто-нибудь знает лучший способ или сможет подтвердить, работает ли это, или я должен попытаться придумать что-то еще, что я хотел бы знать!
Спасибо вам за ваше время и любые советы
Комментарии:
1. docs.unity3d.com/ScriptReference/… есть пример. Ваш не будет работать, если вы всегда не захотите выбрать сцену с более высоким номером. Не должно быть так сложно добавить еще несколько сцен в вашу игру и протестировать ее.
2. Чтобы добавить в точку зрения @RetiredNinja, вам нужно будет только скопировать сцену и добавить что-то вроде текстового поля, которое отличается для каждой сцены. Вы могли бы быстро проверить это.
3. Это правда, я добавлю пару глупых сцен позже, когда смогу, и проверю это. Есть идеи по счетчику уровней? Я хочу, чтобы он мог отслеживать пройденные уровни
Ответ №1:
Вы можете получить полное количество доступных сцен с помощью SceneManager.sceneCountInBuildSettings
и использовать это как максимальное значение, например
private void NextLevel()
{
SceneManager.LoadScene(Random.Range(0,SceneManager.sceneCountInBuildSettings));
}
Ответ №2:
Если вам нужны сцены случайным образом, вы можете использовать это :
private void RandomeLevel()
{
//UnityEngine.Random.Range(0, Max)
//Start 0 and End 4 = ("Max")
int nextSceneIndex = UnityEngine.Random.Range(0, 4);
SceneManager.LoadScene(nextSceneIndex, LoadSceneMode.Single);
}