[TUTORIAL] Salvar a última posição do personagem ao trocar de cena
+3
willianroma
NOME-ALEATORIO
MarcosSchultz
7 participantes
Página 1 de 1
[TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Olá pessoal, elaborei este tutorial simples explicando como salvar a última posição do seu personagem antes de trocar de cena, e caso você volte para aquela cena, você pode facilmente restaurar a última posição salva, deixando a troca de cenas legal.
Vídeo tutorial:
Script 1 - (Deve ir no jogador. O script tem que ser em C# e deve ter o nome "SalvarPosic")
Script 2 - Usado para fazer o loading entre as cenas (assistam o vídeo para entender)
Feito isto, já irá funcionar :D
ASSISTAM O VÍDEO ATÉ O FINAL PARA EVITAR ERROS
Vídeo tutorial:
Script 1 - (Deve ir no jogador. O script tem que ser em C# e deve ter o nome "SalvarPosic")
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
//este script deve estar no seu Player e deve ter o nome "SalvarPosic"
public class SalvarPosic : MonoBehaviour {
string nomeCenaAtual;
void Awake () {
nomeCenaAtual = SceneManager.GetActiveScene ().name;
}
void Start(){
if (PlayerPrefs.HasKey (nomeCenaAtual + "X") && PlayerPrefs.HasKey (nomeCenaAtual + "Y") && PlayerPrefs.HasKey (nomeCenaAtual + "Z")) {
transform.position = new Vector3 (PlayerPrefs.GetFloat (nomeCenaAtual + "X"), PlayerPrefs.GetFloat (nomeCenaAtual + "Y"), PlayerPrefs.GetFloat (nomeCenaAtual + "Z"));
}
}
public void SalvarLocalizacao () {
PlayerPrefs.SetFloat (nomeCenaAtual + "X", transform.position.x);
PlayerPrefs.SetFloat (nomeCenaAtual + "Y", transform.position.y);
PlayerPrefs.SetFloat (nomeCenaAtual + "Z", transform.position.z);
}
}
Script 2 - Usado para fazer o loading entre as cenas (assistam o vídeo para entender)
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class Carregar : MonoBehaviour {
bool podeInteragir = false;
public GameObject Jogador;
public string CenaACarregar;
void Update(){
if (podeInteragir == true && Input.GetKeyDown (KeyCode.E)) {
Jogador.GetComponent<SalvarPosic> ().SalvarLocalizacao ();
SceneManager.LoadScene (CenaACarregar);
}
}
void OnTriggerEnter(){
podeInteragir = true;
}
void OnTriggerExit(){
podeInteragir = false;
}
void OnGUI(){
if (podeInteragir == true) {
GUIStyle stylez = new GUIStyle ();
stylez.alignment = TextAnchor.MiddleCenter;
GUI.skin.label.fontSize = 20;
GUI.Label (new Rect (Screen.width / 2 - 50, Screen.height / 2 + 50, 200, 30), "Pressione 'E'");
}
}
}
Feito isto, já irá funcionar :D
ASSISTAM O VÍDEO ATÉ O FINAL PARA EVITAR ERROS
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
tópico atualizado - vídeo foi upado novamente.
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Youtube Como Sempre Bugado Ne Marcos
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Marcos, caso eu queira resetar algo salvo? tipo, salvei em um ponto mas ficou muito ruim, como faria pra caso eu queira da um resete? usaria o PlayerPrefs.DeleteKey? ou tem um jeito diferente?
Obs: quando tentei usar o "DeleteKey", deleto o que eu tinha salvo mas, eu não consigo mais salvar o que queria e gostaria de entende mais sobre essa parte pra evitar esse tipo de coisa
Obs: quando tentei usar o "DeleteKey", deleto o que eu tinha salvo mas, eu não consigo mais salvar o que queria e gostaria de entende mais sobre essa parte pra evitar esse tipo de coisa
willianroma- Avançado
- PONTOS : 3193
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
willianroma escreveu:Marcos, caso eu queira resetar algo salvo? tipo, salvei em um ponto mas ficou muito ruim, como faria pra caso eu queira da um resete? usaria o PlayerPrefs.DeleteKey? ou tem um jeito diferente?
Obs: quando tentei usar o "DeleteKey", deleto o que eu tinha salvo mas, eu não consigo mais salvar o que queria e gostaria de entende mais sobre essa parte pra evitar esse tipo de coisa
Para resetar algo salvo tem que usar o DeleteKey, ou o DeleteAll... Mas tem que tirá-lo do script depois, para não ficar deletando o tempo todo. O correto é criar uma void e chamar o comando de delete somente apertando algum botão, ou algo assim.
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
tem como apagar o lugar salvo nos arquivos da unity,ou pela unity?
pq salvei em um lugar ae quando eu dou play na cena fica gravado a ultima posição...
ou tem como deletar as posições quando o jogo fechar,tipo eu dou play ae passo de uma cena para outra ae grava a posição,mas se eu fechar o jogo(quando ja estiver feito a build) ou no modo editor msm essa posição será resetada, pq se o jogador fechar o jogo,quando ele voltar ele voltará para a ultima posição..
pq salvei em um lugar ae quando eu dou play na cena fica gravado a ultima posição...
ou tem como deletar as posições quando o jogo fechar,tipo eu dou play ae passo de uma cena para outra ae grava a posição,mas se eu fechar o jogo(quando ja estiver feito a build) ou no modo editor msm essa posição será resetada, pq se o jogador fechar o jogo,quando ele voltar ele voltará para a ultima posição..
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Não entendi, poderia ser mais específico?
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Tipo quando eu passo de uma cena para outra salva a posição certo?eu queria apagar essa posição, sem ser por script,ou apagar quando eu fechasse o jogo..Souris escreveu:Não entendi, poderia ser mais específico?
Entendeu?
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Você pode salvar o ponto que você quer e assim ele dá um "spawn" no checkpoint. Isto seria +- um reset no PlayerPrefs.
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
não intendi...Souris escreveu:Você pode salvar o ponto que você quer e assim ele dá um "spawn" no checkpoint. Isto seria +- um reset no PlayerPrefs.
eu vi um comentario acima falando sobre PlayerPrefs.DeleteKey,mas tem que fazer um script...
vc poderia criar essa linha do PlayerPrefs.DeleteKey para eu ativar quando for apertar um botao.
eu nao sei programar nada,se vc poder me ajudar.
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Da própria Unity:
https://docs.unity3d.com/ScriptReference/PlayerPrefs.DeleteAll.html
Recomendo que você comece a aprender à programar, pois isto é essencial para o seu jogo.
https://docs.unity3d.com/ScriptReference/PlayerPrefs.DeleteAll.html
- Código:
//This example creates a button on the screen that if pressed, deletes any PlayerPrefs settings.
//You must set values or keys in the PlayerPrefs first to see this in action.
using UnityEngine;
public class Example : MonoBehaviour
{
void OnGUI()
{
//Delete all of the PlayerPrefs settings by pressing this Button
if (GUI.Button(new Rect(100, 200, 200, 60), "Delete"))
{
PlayerPrefs.DeleteAll();
}
}
}
Recomendo que você comece a aprender à programar, pois isto é essencial para o seu jogo.
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
- Código:
public void DeletarLocalizacao () {
PlayerPrefs.DeleteKey (nomeCenaAtual + "X");
PlayerPrefs.DeleteKey (nomeCenaAtual + "Y");
PlayerPrefs.DeleteKey (nomeCenaAtual + "Z");
}
void OnApplicationQuit(){
DeletarLocalizacao();
}
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationQuit.html
https://docs.unity3d.com/ScriptReference/PlayerPrefs.DeleteKey.html
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Estou tendo problemas em colocar dois transitor de cena na mesma cena,eles só mudam pra mesma cena independente do que eu faça (mudei nome de scripiti mudei o nome das cenas e etc)
Alguém ja conseguiu algo do tipo?
Alguém ja conseguiu algo do tipo?
Nanerzito- Iniciante
- PONTOS : 2071
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Salvar a última posição do personagem ao trocar de cena
Nanerzito escreveu:Estou tendo problemas em colocar dois transitor de cena na mesma cena,eles só mudam pra mesma cena independente do que eu faça (mudei nome de scripiti mudei o nome das cenas e etc)
Alguém ja conseguiu algo do tipo?
O problema está no PlayerPrefs, pois ele está salvando sempre na mesma key...
Você deve trocar a key em que o PlayerPrefs salva e lê valores
Tópicos semelhantes
» Salvar posição do personagem na cena
» {duvida pesada} Sistema De Load [ salvar a ultima cena que eu "entrei"}
» [TUTORIAL] Evitar Sombras ULTRA escuras após trocar de cena
» Manter a última posic de objetos após sair e voltar de cena
» Salvar dados do player ao trocar de cenas
» {duvida pesada} Sistema De Load [ salvar a ultima cena que eu "entrei"}
» [TUTORIAL] Evitar Sombras ULTRA escuras após trocar de cena
» Manter a última posic de objetos após sair e voltar de cena
» Salvar dados do player ao trocar de cenas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos