Страница 1 из 1

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

СообщениеДобавлено: 07 июл 2021, 12:27
bebramet
Короче я решил создать обычную головоломку на андроид без меню, и я бы хотел сделать чтоб при переходе на другую сцену у игрока она сохранялась как начальная при запуске игры, ну типа чтобы он не начинал с 1 уровня ,а продолжил свою игру с того с которого он вышел с игры

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

вот код перехода лвл если нужен

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

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

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

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

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

СообщениеДобавлено: 07 июл 2021, 13:22
1max1
В чем же проблема сохранить номер сцены?
https://docs.unity3d.com/ScriptReferenc ... etInt.html
https://docs.unity3d.com/ScriptReferenc ... Index.html

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

СообщениеДобавлено: 08 июл 2021, 09:57
bebramet
Синтаксис:
Используется 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);
        }
;
       

    }
   
       
   
    }

сделал этот скрипт, накинул на кнопку, но он не работает почему?

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

СообщениеДобавлено: 08 июл 2021, 12:54
Alkos26Rus
Ты вроде сохраняешь текущую сцену, попробуй так
Синтаксис:
Используется 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);
        }

    }
 

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

СообщениеДобавлено: 08 июл 2021, 13:06
bebramet
не работает

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

СообщениеДобавлено: 08 июл 2021, 13:24
Alkos26Rus
bebramet писал(а):не работает

Очень информативно. Что именно не работает? Что дает лог сохраненного ключа? Выдает ошибку или что?

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

СообщениеДобавлено: 08 июл 2021, 17:53
bebramet
Ничего не изменилось и все.

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

СообщениеДобавлено: 08 июл 2021, 17:55
bebramet
Короче я нашел решение если кому интересно то
Синтаксис:
Используется 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"));
        }
       



    }
}

второй код все работает без меню