Сохранение/загрузка с переходом по сценам

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Сохранение/загрузка с переходом по сценам

Сообщение dostalition 18 апр 2013, 15:26

Хочу сделать простенькую систему сохранения положения персонажа и текущей сцены ... Нашел такой скрипт
Синтаксис:
Используется csharp
 using UnityEngine;
 using System.Collections;
 
 public class SaveLoad_C : MonoBehaviour
 {     
 
 public Transform CurrentPlayerPosition;        
 void Update ()
 {               
 if(Input.GetKeyDown(KeyCode.X))
   savePosition();                     
 if(Input.GetKeyDown(KeyCode.Z))
 if (PlayerPrefs.HasKey("PosX"))  // проверяем, есть ли в сохранении подобная информация
   loadPosition();     
 if(Input.GetKeyDown(KeyCode.C))        
 PlayerPrefs.DeleteAll();       // очистка всей информации для этого приложения
 }  
 public void savePosition()
 {
 Transform CurrentPlayerPosition = this.gameObject.transform;  
 PlayerPrefs.SetFloat("PosX", CurrentPlayerPosition.position.x); // т.к. автоматической работы  
 PlayerPrefs.SetFloat("PosY", CurrentPlayerPosition.position.y); // с массивами нет, разбиваем на      
 PlayerPrefs.SetFloat("PosZ", CurrentPlayerPosition.position.z);  // отдельные float и записываем
 PlayerPrefs.SetFloat("AngX", CurrentPlayerPosition.eulerAngles.x);
 PlayerPrefs.SetFloat("AngY", CurrentPlayerPosition.eulerAngles.y);    
 PlayerPrefs.SetString("level", Application.loadedLevelName); // ещё можно писать/читать строки
 PlayerPrefs.SetInt("level_id", Application.loadedLevel); // и целые
 }      
 public void loadPosition()
 {      
 Transform CurrentPlayerPosition = this.gameObject.transform;  
 Vector3 PlayerPosition = new Vector3(PlayerPrefs.GetFloat("PosX"), PlayerPrefs.GetFloat("PosY"), PlayerPrefs.GetFloat("PosZ"));
 Vector3 PlayerDirection = new Vector3(PlayerPrefs.GetFloat("AngX"), PlayerPrefs.GetFloat("AngY"), 0);  // генерируем новые вектора на основе загруженных данных        
 CurrentPlayerPosition.position = PlayerPosition; // и применяем их
 CurrentPlayerPosition.eulerAngles = PlayerDirection;          
               
 }
 }
Но автор не дописал пару строк о загрузке сохранённой сцены ... Я вставил в конце такую
Синтаксис:
Используется csharp
 Application.loadedLevel = PlayerPrefs.GetInt("level_id");
Но , видимо, нужна ещё одна перед этой, в которой бы генерировался уровен на основе сохранения, как и с положением игрока, но Я не могу понять как это прописать ... Я понимаю, что для генерации положения игрока пишется это
Синтаксис:
Используется csharp
Vector3 PlayerPosition = new Vector3(PlayerPrefs.GetFloat("PosX"), PlayerPrefs.GetFloat("PosY"), PlayerPrefs.GetFloat("PosZ"));
А с генерацией номера сцены не разберусь ... Подскажите, будьте ДОБРЫ ... :)
ТВОРЧЕСТВО рулит ... :) Все эти чередующиеся нули и единицы ничего не стоят без АТМОСФЕРЫ, ЦЕЛОСТНОСТИ ПРОИЗВЕДЕНИЯ и прочих ТОНКИХ, но столь необходимых штук ... :)
Аватара пользователя
dostalition
UNITрон
 
Сообщения: 295
Зарегистрирован: 21 янв 2013, 01:35
Откуда: Украина

Re: Сохранение/загрузка с переходом по сценам

Сообщение dostalition 18 апр 2013, 22:44

Вопрос решился вот такой строчкой
Код: Выделить всё
Application.LoadLevel(PlayerPrefs.GetInt("level_id"));
Потратил ЦЕЛЫЙ ДЕНЬ на то, чтобы САМОМУ это ВДУПЛИТЬ ... А ведь, мог же Кто-то и подсказать ...
Аватара пользователя
dostalition
UNITрон
 
Сообщения: 295
Зарегистрирован: 21 янв 2013, 01:35
Откуда: Украина


Вернуться в Почемучка

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

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 25