[TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
+5
teyroberto1
Flávio
dstaroski
NKKF
MarcosSchultz
9 participantes
Página 1 de 1
[TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Fala galera, estou trazendo este tutorial simples mostrando como utilizar o PlayerPrefs para salvar o Score do seu jogo e substituir caso faça mais pontos.
Este código pode ser utilizado em várias cenas.
Vídeo explicando:
Código utilizado:
Este código pode ser utilizado em várias cenas.
Vídeo explicando:
Código utilizado:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SalvarScore : MonoBehaviour {
public int scoreAtualDoNivel;
public int scoreMaximoSalvo;
string nomeDaCena;
void Start () {
scoreAtualDoNivel = 0;
scoreMaximoSalvo = 0;
nomeDaCena = SceneManager.GetActiveScene ().name;
//PlayerPrefs.DeleteKey (nomeDaCena + "score");
if (PlayerPrefs.HasKey (nomeDaCena + "score")) {
scoreMaximoSalvo = PlayerPrefs.GetInt (nomeDaCena + "score");
}
}
void Update () {
scoreAtualDoNivel = (int) transform.position.x;
ChecarScore ();
}
void ChecarScore(){
if (scoreAtualDoNivel > scoreMaximoSalvo) {
scoreMaximoSalvo = scoreAtualDoNivel;
PlayerPrefs.SetInt (nomeDaCena + "score", scoreMaximoSalvo);
}
}
}
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Nice Marcos, poderia fazer um tutorial explicando sobre criar e ler arquivos com a Unity, tipo uma criptografia e tals xD
NKKF- ProgramadorMaster
- PONTOS : 4817
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 SCORE e substituir caso faça mais pontos.
NKKF escreveu:Nice Marcos, poderia fazer um tutorial explicando sobre criar e ler arquivos com a Unity, tipo uma criptografia e tals xD
Criar e ler arquivos? de que tipo??? Teria algum exemplo de utilidade?
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
É, tipo fazer um save game customizado, sabe?
NKKF- ProgramadorMaster
- PONTOS : 4817
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 SCORE e substituir caso faça mais pontos.
Muito bom! parabéns ai brothi!MarcosSchultz escreveu:Fala galera, estou trazendo este tutorial simples mostrando como utilizar o PlayerPrefs para salvar o Score do seu jogo e substituir caso faça mais pontos.
Este código pode ser utilizado em várias cenas.
Vídeo explicando:
Código utilizado:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SalvarScore : MonoBehaviour {
public int scoreAtualDoNivel;
public int scoreMaximoSalvo;
string nomeDaCena;
void Start () {
scoreAtualDoNivel = 0;
scoreMaximoSalvo = 0;
nomeDaCena = SceneManager.GetActiveScene ().name;
//PlayerPrefs.DeleteKey (nomeDaCena + "score");
if (PlayerPrefs.HasKey (nomeDaCena + "score")) {
scoreMaximoSalvo = PlayerPrefs.GetInt (nomeDaCena + "score");
}
}
void Update () {
scoreAtualDoNivel = (int) transform.position.x;
ChecarScore ();
}
void ChecarScore(){
if (scoreAtualDoNivel > scoreMaximoSalvo) {
scoreMaximoSalvo = scoreAtualDoNivel;
PlayerPrefs.SetInt (nomeDaCena + "score", scoreMaximoSalvo);
}
}
}
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Marcos vc pode depois fazer um tutorial sobre como usar 'Dictionary'?
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Flávio escreveu:Marcos vc pode depois fazer um tutorial sobre como usar 'Dictionary'?
Será feito!!! Acho que vai ser o próximo na série de C#
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
- Código:
ta dando esse erro
Assets/Script/gameControlle.cs(4,19): error CS0234: The type or namespace name `SceneManagement' does not exist in the namespace `UnityEngine'. Are you missing an assembly reference?
teyroberto1- Iniciante
- PONTOS : 2864
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Subistitui a linha do erro por isto:
- Código:
using UnityEngine.SceneManagement;
Magnatah- Instrutor
- PONTOS : 3547
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Alguem poderia me ajudar? Eu queria fazer os Scores aparecerem no slider no canto da tela, sou novo em criar jogos, queria a ajuda para fazer isso
GGUI- Iniciante
- PONTOS : 1906
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
slider?GGUI escreveu:Alguem poderia me ajudar? Eu queria fazer os Scores aparecerem no slider no canto da tela, sou novo em criar jogos, queria a ajuda para fazer isso
mas slider é um input e não um objeto de visualização...
não é melhor uma imagem onde você altera o fill horizontal dela?
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
to com uma dificuldade terrível em colocar este codigo no meu jogo e fazer ele funcionar corretamente com o que ja tenho criado. Ainda to começando a mexer no unity e gostaria que o highscore aparece na tela tambem assim como a pontuação atual
poderiam me ajudar?
meu codigo atual é
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Principal : MonoBehaviour
{
public GameObject jogador;
public GameObject felpudoIdle;
public GameObject felpudoBate;
public GameObject blocoEsq;
public GameObject blocoDir;
public GameObject blocoCentro;
public GameObject barra;
public Text textoScore;
public AudioClip somBate;
public AudioClip somPerde;
bool acabou;
bool comecou;
bool ladoJogador;
int scoreJogo;
private float escalaHorizontalJogador;
private List<GameObject> listaBlocos;
void Start()
{
felpudoBate.SetActive(false);
escalaHorizontalJogador = jogador.transform.localScale.x;
listaBlocos = new List<GameObject>();
CriaBlocosNaCena();
textoScore.transform.position = new Vector2(Screen.width / 2, Screen.height / 2);
textoScore.text = "Toque para iniciar!";
textoScore.fontSize = 25;
}
void Update()
{
if (!acabou)
{
if (Input.GetButtonDown("Fire1"))
{
if (!comecou)
{
comecou = true;
barra.SendMessage("ComecouJogo");
}
if (Input.mousePosition.x > Screen.width / 2)
{
bateDireita();
}
else
{
bateEsquerda();
}
Invoke("VoltaAnimacao", 0.25f);
felpudoBate.SetActive(true);
felpudoIdle.SetActive(false);
listaBlocos.RemoveAt(0);
ReposicionaBlocos();
confereJogada();
}
}
}
void bateDireita()
{
ladoJogador = false;
listaBlocos[0].SendMessage("TomaPancadaDireita");
jogador.transform.position = new Vector2(1.1f, jogador.transform.position.y);
jogador.transform.localScale = new Vector2(-escalaHorizontalJogador, jogador.transform.localScale.y);
}
void bateEsquerda()
{
ladoJogador = true;
listaBlocos[0].SendMessage("TomaPancadaEsquerda");
jogador.transform.position = new Vector2(-1.1f, jogador.transform.position.y);
jogador.transform.localScale = new Vector2(escalaHorizontalJogador, jogador.transform.localScale.y);
}
void VoltaAnimacao()
{
felpudoBate.SetActive(false);
felpudoIdle.SetActive(true);
}
void CriaBlocosNaCena()
{
for (int i = 0; i <= 7; i++)
{
GameObject novoObj = CriaNovoBarril(new Vector2(0, -1.792f + (i * 0.835f)));
listaBlocos.Add(novoObj);
}
}
void ReposicionaBlocos()
{
GameObject novoBarril = CriaNovoBarril(new Vector2(0, -1.792f + (8 * 0.835f)));
listaBlocos.Add(novoBarril);
for (int i = 0; i <= 7; i++)
{
listaBlocos[i].transform.position = new Vector2(listaBlocos[i].transform.position.x, listaBlocos[i].transform.position.y - 0.835f);
}
}
GameObject CriaNovoBarril(Vector2 posicao)
{
GameObject novoBarril;
if ((Random.value > 0.5f) || listaBlocos.Count < 2)
{
novoBarril = Instantiate(blocoCentro);
}
else
{
if (Random.value > 0.5f)
{
novoBarril = Instantiate(blocoDir);
}
else
{
novoBarril = Instantiate(blocoEsq);
}
}
novoBarril.transform.position = posicao;
return novoBarril;
}
void confereJogada()
{
if (listaBlocos[0].gameObject.CompareTag("Inimigo"))
{
if ((listaBlocos[0].name == "inimigoEsq(Clone)" && ladoJogador) || (listaBlocos[0].name == "inimigoDir(Clone)" && !ladoJogador))
{
FimDeJogo();
GetComponent<AudioSource>().PlayOneShot(somPerde);
}
else
{
barra.SendMessage("AumentaBarra");
MarcaPonto();
}
}
else { MarcaPonto(); }
}
void RecarregaCena()
{
Application.LoadLevel("Menu");
}
void MarcaPonto()
{
scoreJogo++;
textoScore.text = scoreJogo.ToString();
textoScore.transform.position = new Vector2((Screen.width / 32) * 2, (Screen.height / * 7);
textoScore.fontSize = 70;
textoScore.color = new Color(0.95f, 1.0f, 0.35f);
GetComponent<AudioSource>().PlayOneShot(somBate);
}
void FimDeJogo()
{
acabou = true;
felpudoBate.GetComponent<SpriteRenderer>().color = new Color(1f, 0.25f, 0.25f, 1.0f);
felpudoIdle.GetComponent<SpriteRenderer>().color = new Color(1f, 0.25f, 0.25f, 1.0f);
jogador.GetComponent<Rigidbody2D>().isKinematic = false;
jogador.GetComponent<Rigidbody2D>().AddTorque(100f);
if (ladoJogador)
{
jogador.GetComponent<Rigidbody2D>().velocity = new Vector2(-5, 3);
}
else { jogador.GetComponent<Rigidbody2D>().velocity = new Vector2(5, 3); }
Invoke("RecarregaCena", 1);
}
}
poderiam me ajudar?
meu codigo atual é
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Principal : MonoBehaviour
{
public GameObject jogador;
public GameObject felpudoIdle;
public GameObject felpudoBate;
public GameObject blocoEsq;
public GameObject blocoDir;
public GameObject blocoCentro;
public GameObject barra;
public Text textoScore;
public AudioClip somBate;
public AudioClip somPerde;
bool acabou;
bool comecou;
bool ladoJogador;
int scoreJogo;
private float escalaHorizontalJogador;
private List<GameObject> listaBlocos;
void Start()
{
felpudoBate.SetActive(false);
escalaHorizontalJogador = jogador.transform.localScale.x;
listaBlocos = new List<GameObject>();
CriaBlocosNaCena();
textoScore.transform.position = new Vector2(Screen.width / 2, Screen.height / 2);
textoScore.text = "Toque para iniciar!";
textoScore.fontSize = 25;
}
void Update()
{
if (!acabou)
{
if (Input.GetButtonDown("Fire1"))
{
if (!comecou)
{
comecou = true;
barra.SendMessage("ComecouJogo");
}
if (Input.mousePosition.x > Screen.width / 2)
{
bateDireita();
}
else
{
bateEsquerda();
}
Invoke("VoltaAnimacao", 0.25f);
felpudoBate.SetActive(true);
felpudoIdle.SetActive(false);
listaBlocos.RemoveAt(0);
ReposicionaBlocos();
confereJogada();
}
}
}
void bateDireita()
{
ladoJogador = false;
listaBlocos[0].SendMessage("TomaPancadaDireita");
jogador.transform.position = new Vector2(1.1f, jogador.transform.position.y);
jogador.transform.localScale = new Vector2(-escalaHorizontalJogador, jogador.transform.localScale.y);
}
void bateEsquerda()
{
ladoJogador = true;
listaBlocos[0].SendMessage("TomaPancadaEsquerda");
jogador.transform.position = new Vector2(-1.1f, jogador.transform.position.y);
jogador.transform.localScale = new Vector2(escalaHorizontalJogador, jogador.transform.localScale.y);
}
void VoltaAnimacao()
{
felpudoBate.SetActive(false);
felpudoIdle.SetActive(true);
}
void CriaBlocosNaCena()
{
for (int i = 0; i <= 7; i++)
{
GameObject novoObj = CriaNovoBarril(new Vector2(0, -1.792f + (i * 0.835f)));
listaBlocos.Add(novoObj);
}
}
void ReposicionaBlocos()
{
GameObject novoBarril = CriaNovoBarril(new Vector2(0, -1.792f + (8 * 0.835f)));
listaBlocos.Add(novoBarril);
for (int i = 0; i <= 7; i++)
{
listaBlocos[i].transform.position = new Vector2(listaBlocos[i].transform.position.x, listaBlocos[i].transform.position.y - 0.835f);
}
}
GameObject CriaNovoBarril(Vector2 posicao)
{
GameObject novoBarril;
if ((Random.value > 0.5f) || listaBlocos.Count < 2)
{
novoBarril = Instantiate(blocoCentro);
}
else
{
if (Random.value > 0.5f)
{
novoBarril = Instantiate(blocoDir);
}
else
{
novoBarril = Instantiate(blocoEsq);
}
}
novoBarril.transform.position = posicao;
return novoBarril;
}
void confereJogada()
{
if (listaBlocos[0].gameObject.CompareTag("Inimigo"))
{
if ((listaBlocos[0].name == "inimigoEsq(Clone)" && ladoJogador) || (listaBlocos[0].name == "inimigoDir(Clone)" && !ladoJogador))
{
FimDeJogo();
GetComponent<AudioSource>().PlayOneShot(somPerde);
}
else
{
barra.SendMessage("AumentaBarra");
MarcaPonto();
}
}
else { MarcaPonto(); }
}
void RecarregaCena()
{
Application.LoadLevel("Menu");
}
void MarcaPonto()
{
scoreJogo++;
textoScore.text = scoreJogo.ToString();
textoScore.transform.position = new Vector2((Screen.width / 32) * 2, (Screen.height / * 7);
textoScore.fontSize = 70;
textoScore.color = new Color(0.95f, 1.0f, 0.35f);
GetComponent<AudioSource>().PlayOneShot(somBate);
}
void FimDeJogo()
{
acabou = true;
felpudoBate.GetComponent<SpriteRenderer>().color = new Color(1f, 0.25f, 0.25f, 1.0f);
felpudoIdle.GetComponent<SpriteRenderer>().color = new Color(1f, 0.25f, 0.25f, 1.0f);
jogador.GetComponent<Rigidbody2D>().isKinematic = false;
jogador.GetComponent<Rigidbody2D>().AddTorque(100f);
if (ladoJogador)
{
jogador.GetComponent<Rigidbody2D>().velocity = new Vector2(-5, 3);
}
else { jogador.GetComponent<Rigidbody2D>().velocity = new Vector2(5, 3); }
Invoke("RecarregaCena", 1);
}
}
raphaelperez- Iniciante
- PONTOS : 1579
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
esse fórum me ajuda pra caramba, sou novo na área de games, curti muito desenvolver games, tô descobrindo uma paixão por essa área, se tudo der certo um dia vai sair de hobbie pra minha profissão! :D
Tópicos semelhantes
» [TUTORIAL] Salvar SCORE de um jogo e substituir caso faça mais.
» Salvar Score e Substituir caso faça Mais!
» (DUVIDA) Não consigo salvar o score atual, somente o melhor.
» [TUTORIAL] Tocar mais de um áudio no mesmo objeto ( 2 ou mais AudioSource)
» [TUTORIAL] Mostrar pontos de uma variavel
» Salvar Score e Substituir caso faça Mais!
» (DUVIDA) Não consigo salvar o score atual, somente o melhor.
» [TUTORIAL] Tocar mais de um áudio no mesmo objeto ( 2 ou mais AudioSource)
» [TUTORIAL] Mostrar pontos de uma variavel
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos