Сохранение/загрузка с переходом по сценам - Форум Игроделов
Пн, 10 Фев 2025, 11:04 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Сохранение/загрузка с переходом по сценам
dostalitionДата: Чт, 18 Апр 2013, 23:43 | Сообщение # 1
 
Сообщений: 155
Награды: 0
Репутация: 9
Статус: Offline
Есть такой код
Код
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;            
                  
  }  
  }
В нём есть сохранение номера и названия сцены, но нет загрузки оных ... Дописал такую строчку
Код
Application.loadedLevel = PlayerPrefs.GetInt("level_id");
, но её , явно, не достаточно ... Нужно ещё как-то сгенерировать сцену из сохранения перед применением ... Подскажите чего не хватает !? ...

Добавлено (18.04.2013, 23:43)
---------------------------------------------
Вопрос решился вот такой строчкой

Код
Application.LoadLevel(PlayerPrefs.GetInt("level_id"));
Потратил ЦЕЛЫЙ ДЕНЬ на то, чтобы САМОМУ это ВДУПЛИТЬ ... А ведь, мог же Кто-то и подсказать ...
 
СообщениеЕсть такой код
Код
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;            
                  
  }  
  }
В нём есть сохранение номера и названия сцены, но нет загрузки оных ... Дописал такую строчку
Код
Application.loadedLevel = PlayerPrefs.GetInt("level_id");
, но её , явно, не достаточно ... Нужно ещё как-то сгенерировать сцену из сохранения перед применением ... Подскажите чего не хватает !? ...

Добавлено (18.04.2013, 23:43)
---------------------------------------------
Вопрос решился вот такой строчкой

Код
Application.LoadLevel(PlayerPrefs.GetInt("level_id"));
Потратил ЦЕЛЫЙ ДЕНЬ на то, чтобы САМОМУ это ВДУПЛИТЬ ... А ведь, мог же Кто-то и подсказать ...

Автор - dostalition
Дата добавления - 18 Апр 2013 в 23:43
ЛевшаДата: Пт, 19 Апр 2013, 11:14 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
А в мануал заглянуть было не судьба ? biggrin

X.cor.R (Prologue)
 
СообщениеА в мануал заглянуть было не судьба ? biggrin

Автор - Левша
Дата добавления - 19 Апр 2013 в 11:14
elektro-volkДата: Вс, 21 Апр 2013, 06:32 | Сообщение # 3
 
Сообщений: 13
Награды: 0
Репутация: -14
Статус: Offline
у меня все по другому biggrin там загрузка есть а сохранений нет)))
поделюсь кодом
Код
textFieldString = GUI.TextField (Rect (700, 150, 100, 30), textFieldString);

if (GUI.Button (Rect (700,200,80,20), "3ag6r2z1t"))   
{     

Application.LoadLevel ( textFieldString );   
}

это главная часть
и еще переменная
Код
var textFieldString = "код";
tongue

Добавлено (21.04.2013, 06:32)
---------------------------------------------
у меня все по другому biggrin там загрузка есть а сохранений нет)))
поделюсь кодом

Код
textFieldString = GUI.TextField (Rect (700, 150, 100, 30), textFieldString);

if (GUI.Button (Rect (700,200,80,20), "3ag6r2z1t"))   
{     

Application.LoadLevel ( textFieldString );   
}

это главная часть
и еще переменная
Код
var textFieldString = "код";
tongue
 
Сообщениеу меня все по другому biggrin там загрузка есть а сохранений нет)))
поделюсь кодом
Код
textFieldString = GUI.TextField (Rect (700, 150, 100, 30), textFieldString);

if (GUI.Button (Rect (700,200,80,20), "3ag6r2z1t"))   
{     

Application.LoadLevel ( textFieldString );   
}

это главная часть
и еще переменная
Код
var textFieldString = "код";
tongue

Добавлено (21.04.2013, 06:32)
---------------------------------------------
у меня все по другому biggrin там загрузка есть а сохранений нет)))
поделюсь кодом

Код
textFieldString = GUI.TextField (Rect (700, 150, 100, 30), textFieldString);

if (GUI.Button (Rect (700,200,80,20), "3ag6r2z1t"))   
{     

Application.LoadLevel ( textFieldString );   
}

это главная часть
и еще переменная
Код
var textFieldString = "код";
tongue

Автор - elektro-volk
Дата добавления - 21 Апр 2013 в 06:32
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025