Save Game(posição de tudo)
2 participantes
Página 1 de 1
Save Game(posição de tudo)
Estou tentando elaborar um SaveGame para salvar as posições e rotações dos objetos e player na cena. Porém não estou conseguindo fazer o mesmo com a rotação, mesmo a posição funcionando perfeitamente quando troca de cena. Alguem que saiba como salvar a rotação de um objeto e colocar no start.
Ps: estou utilizando o PlayerPrefs para tudo.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Save : MonoBehaviour
{
float posix, posiy, posiz;
float rotx,roty,rotz;
public bool SalvarRotacao;
public bool SalvarPosicao;
Vector3 posi;
void Awake(){
if(SalvarPosicao == true){
posix = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posix");
posiy = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiy");
posiz = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiz");
}
if(SalvarRotacao == true){
rotx = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotx");
roty = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "roty");
rotz = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotz");
}
}
void Start()
{
if(SalvarPosicao == true){
transform.position = new Vector3(posix,posiy,posiz);
}
if(SalvarRotacao == true){
transform.eulerAngles = new Vector3(rotx,roty,rotz);
}
}
// Update is called once per frame
void Update()
{
if(SalvarPosicao == true){
posi = transform.position;
posix = transform.position.x;
posiy = transform.position.y;
posiz = transform.position.z;
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posix", posix);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiy", posiy);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiz", posiz);
}
if(SalvarRotacao == true){
rotx = transform.rotation.x;
roty = transform.rotation.y;
rotz = transform.rotation.z;
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotx", rotx);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "roty", roty);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotz", rotz);
}
}
}
Ps: estou utilizando o PlayerPrefs para tudo.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Save : MonoBehaviour
{
float posix, posiy, posiz;
float rotx,roty,rotz;
public bool SalvarRotacao;
public bool SalvarPosicao;
Vector3 posi;
void Awake(){
if(SalvarPosicao == true){
posix = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posix");
posiy = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiy");
posiz = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiz");
}
if(SalvarRotacao == true){
rotx = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotx");
roty = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "roty");
rotz = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotz");
}
}
void Start()
{
if(SalvarPosicao == true){
transform.position = new Vector3(posix,posiy,posiz);
}
if(SalvarRotacao == true){
transform.eulerAngles = new Vector3(rotx,roty,rotz);
}
}
// Update is called once per frame
void Update()
{
if(SalvarPosicao == true){
posi = transform.position;
posix = transform.position.x;
posiy = transform.position.y;
posiz = transform.position.z;
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posix", posix);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiy", posiy);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiz", posiz);
}
if(SalvarRotacao == true){
rotx = transform.rotation.x;
roty = transform.rotation.y;
rotz = transform.rotation.z;
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotx", rotx);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "roty", roty);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotz", rotz);
}
}
}
Re: Save Game(posição de tudo)
juansup escreveu:Estou tentando elaborar um SaveGame para salvar as posições e rotações dos objetos e player na cena. Porém não estou conseguindo fazer o mesmo com a rotação, mesmo a posição funcionando perfeitamente quando troca de cena. Alguem que saiba como salvar a rotação de um objeto e colocar no start.
Ps: estou utilizando o PlayerPrefs para tudo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Save : MonoBehaviour
{
float posix, posiy, posiz;
float rotx,roty,rotz;
public bool SalvarRotacao;
public bool SalvarPosicao;
Vector3 posi;
void Awake(){
if(SalvarPosicao == true){
posix = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posix");
posiy = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiy");
posiz = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiz");
}
if(SalvarRotacao == true){
rotx = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotx");
roty = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "roty");
rotz = PlayerPrefs.GetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotz");
}
}
void Start()
{
if(SalvarPosicao == true){
transform.position = new Vector3(posix,posiy,posiz);
}
if(SalvarRotacao == true){
transform.eulerAngles = new Vector3(rotx,roty,rotz);
}
}
// Update is called once per frame
void Update()
{
if(SalvarPosicao == true){
posi = transform.position;
posix = transform.position.x;
posiy = transform.position.y;
posiz = transform.position.z;
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posix", posix);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiy", posiy);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "posiz", posiz);
}
if(SalvarRotacao == true){
rotx = transform.rotation.x;
roty = transform.rotation.y;
rotz = transform.rotation.z;
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotx", rotx);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "roty", roty);
PlayerPrefs.SetFloat(SceneManager.GetActiveScene().name + gameObject.name + "rotz", rotz);
}
}
}
Re: Save Game(posição de tudo)
Ainda que teu sistema funcione, ele não irá escalar bem, PlayerPrefs deve ser usado apenas para armazenar preferências do jogo como volume, resolução, etc. Vai que um curioso mexe no playerprefs e edita a posição desses objetos?
Tente seguir esse tutorial, é o melhor que vai achar sobre esse assunto, e o sistema fica bem robusto podendo salvar vários objetos.
Tente seguir esse tutorial, é o melhor que vai achar sobre esse assunto, e o sistema fica bem robusto podendo salvar vários objetos.
Fagner- Moderador
- PONTOS : 4445
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Save Game(posição de tudo)
Fagner escreveu:Ainda que teu sistema funcione, ele não irá escalar bem, PlayerPrefs deve ser usado apenas para armazenar preferências do jogo como volume, resolução, etc. Vai que um curioso mexe no playerprefs e edita a posição desses objetos?
Tente seguir esse tutorial, é o melhor que vai achar sobre esse assunto, e o sistema fica bem robusto podendo salvar vários objetos.
nao sei quase nada de ingles, o que me dificulta nesses tutoriais, mas msm assim muito obrigado.
Tópicos semelhantes
» Menu Principal com Load Game e Menu de Pause com Save Game?
» save game
» Save and Load game por UI?
» (Ajuda) Save Game
» Save ao Sair do Game!
» save game
» Save and Load game por UI?
» (Ajuda) Save Game
» Save ao Sair do Game!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos