как сделать сохранение уровня?

Программирование для iPhone & Android

как сделать сохранение уровня?

Сообщение bebramet 07 июл 2021, 12:27

Короче я решил создать обычную головоломку на андроид без меню, и я бы хотел сделать чтоб при переходе на другую сцену у игрока она сохранялась как начальная при запуске игры, ну типа чтобы он не начинал с 1 уровня ,а продолжил свою игру с того с которого он вышел с игры

Синтаксис:
Используется csharp
 private void OnTriggerEnter(Collider other)
    {
        if (this.CompareTag("Player") && other.CompareTag("Finish"))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
        }
;
    }

вот код перехода лвл если нужен
bebramet
UNец
 
Сообщения: 6
Зарегистрирован: 07 июл 2021, 12:18

Re: как сделать сохранение уровня?

Сообщение 1max1 07 июл 2021, 12:40

Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как сделать сохранение уровня?

Сообщение bebramet 07 июл 2021, 13:14

да делал я как там пишут, там все примеры по типу сохранения текста, очков и тому подобное все кроме того что мне нужно.
мне нужно сохранить сцену на которой остановилась игра
bebramet
UNец
 
Сообщения: 6
Зарегистрирован: 07 июл 2021, 12:18

Re: как сделать сохранение уровня?

Сообщение 1max1 07 июл 2021, 13:22

В чем же проблема сохранить номер сцены?
https://docs.unity3d.com/ScriptReferenc ... etInt.html
https://docs.unity3d.com/ScriptReferenc ... Index.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как сделать сохранение уровня?

Сообщение bebramet 08 июл 2021, 09:57

Синтаксис:
Используется csharp
 
    int SceneID;
    private void Start()
    {
         SceneID = SceneManager.GetActiveScene().buildIndex;
    }
   


    //Переход лвл
    private void OnTriggerEnter(Collider other)
    {
        if (this.CompareTag("Player") && other.CompareTag("Finish"))
        {
            PlayerPrefs.DeleteKey("Scene");

            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
            PlayerPrefs.SetInt("Scene", SceneID);
            PlayerPrefs.Save();
        }
;

    }

    public void OnMouseDown()
    {

        if (PlayerPrefs.HasKey("Scene"))
        {
            SceneManager.LoadScene(PlayerPrefs.GetInt("Scene"));
           
        }
        else
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
        }
;
       

    }
   
       
   
    }

сделал этот скрипт, накинул на кнопку, но он не работает почему?
bebramet
UNец
 
Сообщения: 6
Зарегистрирован: 07 июл 2021, 12:18

Re: как сделать сохранение уровня?

Сообщение Alkos26Rus 08 июл 2021, 12:54

Ты вроде сохраняешь текущую сцену, попробуй так
Синтаксис:
Используется csharp
    private void OnTriggerEnter(Collider other)
    {
        if (this.CompareTag("Player") && other.CompareTag("Finish"))
        {
            PlayerPrefs.SetInt("Scene", SceneManager.GetActiveScene().buildIndex + 1);
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
        }

    }
 
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: как сделать сохранение уровня?

Сообщение bebramet 08 июл 2021, 13:06

не работает
bebramet
UNец
 
Сообщения: 6
Зарегистрирован: 07 июл 2021, 12:18

Re: как сделать сохранение уровня?

Сообщение Alkos26Rus 08 июл 2021, 13:24

bebramet писал(а):не работает

Очень информативно. Что именно не работает? Что дает лог сохраненного ключа? Выдает ошибку или что?
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: как сделать сохранение уровня?

Сообщение bebramet 08 июл 2021, 17:53

Ничего не изменилось и все.
bebramet
UNец
 
Сообщения: 6
Зарегистрирован: 07 июл 2021, 12:18

Re: как сделать сохранение уровня?

Сообщение bebramet 08 июл 2021, 17:55

Короче я нашел решение если кому интересно то
Синтаксис:
Используется csharp
 int SceneID;
    private void Start()
    {
         SceneID = SceneManager.GetActiveScene().buildIndex + 1;
       
    }

   

    //Переход лвл
    private void OnTriggerEnter(Collider other)
    {
        if (this.CompareTag("Player") && other.CompareTag("Finish"))
        {
            PlayerPrefs.DeleteKey("Scene");
            PlayerPrefs.SetInt("Scene", SceneID);
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
            PlayerPrefs.Save();
        }
;

    }
 

 
           

первый код
Синтаксис:
Используется csharp
public class LoadGamee : MonoBehaviour
{
    private void Start()
    {
        DontDestroyOnLoad(this.gameObject);

       
        LoadGame();
    }
    void LoadGame()
    {
        if (PlayerPrefs.HasKey("Scene"))
        {
            SceneManager.LoadScene(PlayerPrefs.GetInt("Scene"));
        }
       



    }
}

второй код все работает без меню
bebramet
UNец
 
Сообщения: 6
Зарегистрирован: 07 июл 2021, 12:18


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3