Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/64: Рейтинг темы: голосов - 64, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
1

Как реализовать сохранение сцены в C#?

21.04.2019, 22:06. Показов 11563. Ответов 23
Метки c# (Все метки)

Author24 — интернет-сервис помощи студентам
Такой вопрос на который я так и не нашел ответа в интернете. Как сделать например по нажатию на кнопку загрузилась сцена которую сохранил. 1. Я не не знаю как записать эти данные 2. Я не знаю как сделать чтоб скрипт считал эти данные
Помогите Пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2019, 22:06
Ответы с готовыми решениями:

Как реализовать загрузку сцены через OnMouseUpAsButton?
Необходимо написать часть скрипта для Unity, чтобы при тапе на кнопку загружалась сцена.

Сохранение части сцены в картинку
Хочу сделать что б сохранялась определенная область, но сохраняется вся сцена. У меня к примеру на...

Сохранение сцены OpenGL в bmp
Доброго времени суток. Передо мной стоит такая задача: Имеется некоторая сцена, которая...

Сохранение значений при перезапуска сцены
Всем привет, вопрос, как сделать так, чтобы при ре старт сцены сохранились переменная public float...

23
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
22.04.2019, 13:02 2
Цитата Сообщение от Zhokei Посмотреть сообщение
Как сделать например по нажатию на кнопку загрузилась сцена которую сохранил
Загружаешь сцену, и все сохранения, о них можешь почитать https://docs.unity3d.com/Scrip... Prefs.html
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
22.04.2019, 15:05  [ТС] 3
KitsoRik, если ты не понял я абсолютно не знаю как написать имменно этот скрипт.
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
22.04.2019, 15:19 4
Лучший ответ Сообщение было отмечено Zhokei как решение

Решение

Цитата Сообщение от Zhokei Посмотреть сообщение
KitsoRik, если ты не понял я абсолютно не знаю как написать имменно этот скрипт.
C#
1
2
3
4
5
6
7
8
9
    public void Start()
    {
        number = PlayerPrefs.GetInt("INT", 0);
    }
 
    private void OnApplicationQuit()
    {
        PlayerPrefs.SetInt("INT", number);
    }
При выходе переменная будет сохранена в реестр, при входе если в реестре есть, то будет доставаться от туда, если нет то будет равно 0.

Так можно сохранять float и string, с помощью стринга можно делать все, т.е. сохраняем данные в строку, перед этим конечно же эти данные конвертировать из данных сцены в свои, а потом при взятии конвертировать наоборот.

К примеру, есть объект на позиции (11,34,544), сохраняем в реестр с помощью нескольких строк:
C#
1
2
3
4
5
6
    private void OnApplicationQuit()
    {
        PlayerPrefs.SetFloat("POS_X", gameObject.localPosition.x);
        PlayerPrefs.SetFloat("POS_Y", gameObject.localPosition.y);
        PlayerPrefs.SetFloat("POS_Z", gameObject.localPosition.z);
    }
И достаешь:
C#
1
2
3
4
5
6
    private void Awake()
    {
        gameObject.localPosition = new Vector3(PlayerPrefs.GetFloat("POS_X", 0),
        PlayerPrefs.GetFloat("POS_Y", 0),
        PlayerPrefs.GetFloat("POS_Z", 0));
    }
Со строкой и сохранения имени (к примеру питомца, т.е. игрок указывает имя)
C#
1
PlayerPrefs.SetString("PetName", PetName);
C#
1
PetName = PlayerPrefs.GetString("PetName", "Tom");
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
22.04.2019, 16:21  [ТС] 5
kritsoRik, спасибо большое. А как сделать чтоб сохранялся номер сцены. Мне просто надо чтоб загружался уровень
0
3358 / 1772 / 1027
Регистрация: 26.10.2018
Сообщений: 5,199
22.04.2019, 17:12 6
https://docs.unity3d.com/Scrip... Scene.html
C#
1
SceneManager.LoadScene(номер)
В настройках (build) должна быть добавлена эта сцена.
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
22.04.2019, 17:52  [ТС] 7
1max1 ты меня абсолютно не понял мне надо чтоб сохранялся номер сцены на котором персонаж а потом из файла в который сохранился номер взять этот номер и добавить
в
C#
1
Application.LoadScene()
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
22.04.2019, 18:17 8
Zhokei, loadedScene?
0
3358 / 1772 / 1027
Регистрация: 26.10.2018
Сообщений: 5,199
22.04.2019, 18:19 9
Лучший ответ Сообщение было отмечено Zhokei как решение

Решение

C#
1
2
3
int sceneID = SceneManager.GetActiveScene.buildIndex;
PlayerPrefs.SetInt("Scene", sceneID); // Save
SceneManager.LoadScene(PlayerPrefs.GetInt("Scene")); // Load
1
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
22.04.2019, 19:23  [ТС] 10
KitsiRik
1max1
Спасибо вам большое. А можно как то не в реестр, а в документ записать эти файлы.
0
3358 / 1772 / 1027
Регистрация: 26.10.2018
Сообщений: 5,199
22.04.2019, 20:28 11
https://www.youtube.com/watch?v=Hvit6BLh2x4
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
22.04.2019, 21:15  [ТС] 12
1max1 я имею в виду чтоб указать имя файла и путь к нему
0
3358 / 1772 / 1027
Регистрация: 26.10.2018
Сообщений: 5,199
22.04.2019, 21:53 13
Ты видео до конца смотрел?
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
23.04.2019, 18:56  [ТС] 14
1max1 да и я чего то не вижу чтоб указывался путь. Вижу вроде как указывается название, но путь куда он будет сохранятся
0
3358 / 1772 / 1027
Регистрация: 26.10.2018
Сообщений: 5,199
23.04.2019, 20:15 15
Application.dataPath там используется, ты можешь указать свой.
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
23.04.2019, 21:33  [ТС] 16
1max1 типо Application.dataPath (''C:Users/User/Documents"); Да?
0
295 / 244 / 128
Регистрация: 24.12.2014
Сообщений: 708
26.04.2019, 16:32 17
Цитата Сообщение от Zhokei Посмотреть сообщение
Да?
Нет. Это путь к папке "Assets" в режиме редактора и "ПапкаИгры/dataXXXXXXXX" в скомпилированном проекте.
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
27.04.2019, 11:28  [ТС] 18
Цитата Сообщение от 1max1 Посмотреть сообщение
int sceneID = SceneManager.GetActiveScene.buildIndex;
PlayerPrefs.SetInt("Scene", sceneID); // Save
SceneManager.LoadScene(PlayerPrefs.GetInt("Scene")); // Load
Этот скрипт не работает. Выбивает ошибку на buildIndex и SetInt
0
3358 / 1772 / 1027
Регистрация: 26.10.2018
Сообщений: 5,199
27.04.2019, 12:39 19
Сцены в build setting добавь.
0
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 121
27.04.2019, 15:31  [ТС] 20
Цитата Сообщение от 1max1 Посмотреть сообщение
Сцены в build setting добавь.
Добавлены были уже давно
0
27.04.2019, 15:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2019, 15:31
Помогаю со студенческими работами здесь

Как реализовать промежуточное сохранение?
Итак делема вот в чём: Есть заготовка формы настроек, в которой разделы, реализованные на...

Как реализовать сохранение данных?
По задумке пользователь создает на странице заказ который реализован в виде экземпляра объекта как...

Построить 3D модель по варианту. Реализовать масштабирование, поворот и перемещение сцены по всем осям
Подскажите мне пожалуйста, где можно посмотреть похожий пример. Или почитать в инструкциях как...

Как реализовать сохранение массива в реестре?
Здравствуйте. Мне нужно реализовать сохранение и загрузку массива array_time при запуске программы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru