PlayerPrefs загружает уровень, но не позицию игрока

Программирование на Юнити.

PlayerPrefs загружает уровень, но не позицию игрока

Сообщение SashaNyasha 24 авг 2018, 07:22

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class PlayerPrefsSave : MonoBehaviour {
public GameObject CurrentPlayerPosition;

// Use this for initialization
void Start(){
CurrentPlayerPosition = GameObject.Find ("Player");
}

void Awake () {

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;
}

// Update is called once per frame
void Update () {

}


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);

PlayerPrefs.SetFloat("AngX", CurrentPlayerPosition.eulerAngles.x);
PlayerPrefs.SetFloat("AngY", CurrentPlayerPosition.eulerAngles.y);


string scName = SceneManager.GetActiveScene().name;
PlayerPrefs.SetInt ("currentscenesave",SceneManager.GetActiveScene().buildIndex);
PlayerPrefs.SetString ("LostLevel", scName);
}

public void loadPosition(){
SceneManager.GetSceneByName (PlayerPrefs.GetString ("LostLevel"));
SceneManager.GetSceneByBuildIndex (PlayerPrefs.GetInt ("currentscenesave"));
SceneManager.LoadScene (PlayerPrefs.GetInt ("currentscenesave"));
SceneManager.LoadScene (PlayerPrefs.GetString ("LostLevel"));



}
}
SashaNyasha
UNIт
 
Сообщения: 51
Зарегистрирован: 13 авг 2015, 16:20

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение DimaJoke 24 авг 2018, 08:20

Лога никакого нет? Может дело в том, что надо сохранять не float, а Vector, если такая возможность есть? Есть для этого Ассет "Save Game" .
Что бы повзрослеть, человек должен преодолеть ошибки юности.

Поэтому я снова здесь..
Аватара пользователя
DimaJoke
UNITрон
 
Сообщения: 293
Зарегистрирован: 12 авг 2018, 18:59
Откуда: Ульяновск
  • Сайт

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение 1max1 24 авг 2018, 08:26

PlayerPrefs загружает уровень, но не позицию игрока

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

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение Xtir 24 авг 2018, 09:04

Синтаксис:
Используется csharp
public GameObject CurrentPlayerPosition;

// Use this for initialization
void Start(){
CurrentPlayerPosition = GameObject.Find ("Player");
}

void Awake () {

Transform CurrentPlayerPosition = this.gameObject.transform;

меня вот это вообще всё очень сильно смущает
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение 1max1 24 авг 2018, 09:25

меня вот это вообще всё очень сильно смущает

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

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение SashaNyasha 24 авг 2018, 14:06

1max1 писал(а):
PlayerPrefs загружает уровень, но не позицию игрока

так ты нигде в коде ее и не загружаешь, или думаешь они сама волшебным образом должна загрузиться?



Здесь я загружаю позицию:

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;

А в Awake находится, потому что я уже не знаю куда это засунуть,что бы оно загрузилось после загрузки уровня. В start тоже пытался
SashaNyasha
UNIт
 
Сообщения: 51
Зарегистрирован: 13 авг 2015, 16:20

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение IDoNotExist 24 авг 2018, 14:12

Ну и как ты определил что позиция не загружается?
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение DimaJoke 24 авг 2018, 14:19

IDoNotExist писал(а):Ну и как ты определил что позиция не загружается?

Ну наверное потому что, при заходе на уровень позиция перса становится дэфолтной, а не той, которая сохранена...
Что бы повзрослеть, человек должен преодолеть ошибки юности.

Поэтому я снова здесь..
Аватара пользователя
DimaJoke
UNITрон
 
Сообщения: 293
Зарегистрирован: 12 авг 2018, 18:59
Откуда: Ульяновск
  • Сайт

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение DimaJoke 24 авг 2018, 14:20

а ты точно сохраняешь позицию? может ты просто выходишь без сохранения? :-?
Что бы повзрослеть, человек должен преодолеть ошибки юности.

Поэтому я снова здесь..
Аватара пользователя
DimaJoke
UNITрон
 
Сообщения: 293
Зарегистрирован: 12 авг 2018, 18:59
Откуда: Ульяновск
  • Сайт

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение SashaNyasha 24 авг 2018, 14:25

DimaJoke писал(а):а ты точно сохраняешь позицию? может ты просто выходишь без сохранения? :-?


Я всё нажимаю. При таком виде так же не работает, я уже не знаю что делать

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class PlayerPrefsSave : MonoBehaviour {
public GameObject CurrentPlayerPosition;

// Use this for initialization
void Start(){
CurrentPlayerPosition = GameObject.Find ("Player");
LoadPosition ();
}



// Update is called once per frame
void Update () {

}

public void LoadLevel(){
SceneManager.GetSceneByName (PlayerPrefs.GetString ("LostLevel"));
SceneManager.GetSceneByBuildIndex (PlayerPrefs.GetInt ("currentscenesave"));
SceneManager.LoadScene (PlayerPrefs.GetInt ("currentscenesave"));
SceneManager.LoadScene (PlayerPrefs.GetString ("LostLevel"));





}

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;
}


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);

PlayerPrefs.SetFloat("AngX", CurrentPlayerPosition.eulerAngles.x);
PlayerPrefs.SetFloat("AngY", CurrentPlayerPosition.eulerAngles.y);


string scName = SceneManager.GetActiveScene().name;
PlayerPrefs.SetInt ("currentscenesave",SceneManager.GetActiveScene().buildIndex);
PlayerPrefs.SetString ("LostLevel", scName);
}

}
SashaNyasha
UNIт
 
Сообщения: 51
Зарегистрирован: 13 авг 2015, 16:20

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение 1max1 24 авг 2018, 14:43

public GameObject CurrentPlayerPosition;
CurrentPlayerPosition = GameObject.Find ("Player");
Transform CurrentPlayerPosition = this.gameObject.transform;

Может дело в том что ты сохраняешь хрен пойми что, а не своего игрока?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение IDoNotExist 24 авг 2018, 15:09

DimaJoke писал(а):
IDoNotExist писал(а):Ну и как ты определил что позиция не загружается?

Ну наверное потому что, при заходе на уровень позиция перса становится дэфолтной, а не той, которая сохранена...

Во - первых, как установка позиции на перса связана с ЗАГРУЗКОЙ из префсов? Во вторых, почему ТСа отвечаешь ты?
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение SashaNyasha 24 авг 2018, 15:13

IDoNotExist писал(а):
DimaJoke писал(а):
IDoNotExist писал(а):Ну и как ты определил что позиция не загружается?


Теперь при таком виде всё загружается, но как сделать так,чтобы именно после загрузки "SceneManager.LoadScene (PlayerPrefs.GetString ("LostLevel"));" срабатывала функция " LoadPosition ();" в void Start ?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class PlayerPrefsSave : MonoBehaviour {
public Transform CurrentPlayerPosition;

public float xPos;
public float yPos;
public float zPos;

// Use this for initialization
void Start(){
//CurrentPlayerPosition = GameObject.Find ("Player");
LoadPosition ();

}



// Update is called once per frame
void Update () {

}

public void LoadLevel(){
SceneManager.GetSceneByName (PlayerPrefs.GetString ("LostLevel"));
SceneManager.GetSceneByBuildIndex (PlayerPrefs.GetInt ("currentscenesave"));
SceneManager.LoadScene (PlayerPrefs.GetInt ("currentscenesave"));
SceneManager.LoadScene (PlayerPrefs.GetString ("LostLevel"));





}

public void LoadPosition(){

CurrentPlayerPosition.transform.position = new Vector3 (PlayerPrefs.GetFloat ("XPosition"),
PlayerPrefs.GetFloat ("YPosition"), PlayerPrefs.GetFloat ("ZPosition"));

}


public void savePosition(){



PlayerPrefs.SetFloat ("XPosition", CurrentPlayerPosition.transform.position.x);
PlayerPrefs.SetFloat ("YPosition", CurrentPlayerPosition.transform.position.y);
PlayerPrefs.SetFloat ("ZPosition", CurrentPlayerPosition.transform.position.z);

string scName = SceneManager.GetActiveScene().name;
PlayerPrefs.SetInt ("currentscenesave",SceneManager.GetActiveScene().buildIndex);
PlayerPrefs.SetString ("LostLevel", scName);
}

}
SashaNyasha
UNIт
 
Сообщения: 51
Зарегистрирован: 13 авг 2015, 16:20

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение IDoNotExist 24 авг 2018, 15:18

После загрузки сцены в ней скрипт PlayerPrefsSave присутствует то? И если да, то как он туда попал? Он заранее был на каком - либо гейм объекте сцены, или пришел туда через DontDestroyOnLoad()?
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: PlayerPrefs загружает уровень, но не позицию игрока

Сообщение SashaNyasha 24 авг 2018, 15:22

IDoNotExist писал(а):После загрузки сцены в ней скрипт PlayerPrefsSave присутствует то? И если да, то как он туда попал? Он заранее был на каком - либо гейм объекте сцены, или пришел туда через DontDestroyOnLoad()?


Через DontDestroyOnLoad
SashaNyasha
UNIт
 
Сообщения: 51
Зарегистрирован: 13 авг 2015, 16:20

След.

Вернуться в Скрипты

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

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