Como Colocar Pontuação Final na GUI de GAME OVER
5 participantes
Página 1 de 1
Como Colocar Pontuação Final na GUI de GAME OVER
Olá pessoal, mais um dúvida. Fiz um sistema de pontuação e está funcionando bem. Então resolvi criar uma GUI de GameOver com o Canvas da Unity, coloquei botões e texto. Eu coloquei o script da minha Pontuação no texto da score final da Canvas GameOver mas não está aparecendo a score final, e sim 0, ele reseta minha score quando o jogador morre e não mostra na tela. Como faço para aparecer a pontuação que o jogador fez na minha GUI GameOver? Vi vários tópicos aqui mas nenhum me ajudou.
Script Pontuação
Pontuação sendo chamada na classe Inimigo
Função Game Over (localizada no Script do Jogador)
Script Pontuação
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Pontuacao : MonoBehaviour {
public int pontuacao;
public Text txtpontuacao;
void Awake ()
{
txtpontuacao = GetComponent<Text>();
pontuacao = 0;
}
void Update () {
txtpontuacao.text = "Pontuação " + pontuacao;
GameObject.Find ("Pontuacao").GetComponent<Text>().text= "Pontuação " + pontuacao;
}
}
Pontuação sendo chamada na classe Inimigo
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
[SerializeField]
private int minValorPontos;
[SerializeField]
private int maxValorPontos;
private int valorInimigo;
public Pontuacao pontos;
void Start () {
valorInimigo = Random.Range (minValorPontos, maxValorPontos);
pontos = FindObjectOfType<Pontuacao>();
}
void PerderVida(Collider2D outro)
{
if (outro.tag == "Tiro")
{
if(vida > 0)
{
vida--;
}
if(vida<= 0)
{
Destroy (gameObject);
pontos.pontuacao+=valorInimigo;
}
Destroy (outro.gameObject);
}
}
Função Game Over (localizada no Script do Jogador)
- Código:
private bool gameOver = false;
public void GameOver()
{
if (!gameOver)
{
gameOver = true;
gameOverMenu.SetActive (true);
}
RobinF- Iniciante
- PONTOS : 2647
REPUTAÇÃO : 0
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Olá Amigo
Recomendo Fortemente Assistir aos Tutoriais no Marcos
Aqui está oque ele Explica tudo Sobre UI (Gui)
Recomendo Fortemente Assistir aos Tutoriais no Marcos
Aqui está oque ele Explica tudo Sobre UI (Gui)
Re: Como Colocar Pontuação Final na GUI de GAME OVER
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Pontuacao : MonoBehaviour {
public int pontuacao;
public Text txtpontuacao;
void Awake () {
txtpontuacao = GetComponent<Text>();
pontuacao = 0;
}
void Update () {
txtpontuacao.text = "Pontuação: " + pontuacao;
}
}
Certifique-se de que você tenha colocado este script no texto correspondente aos pontos, lá no canvas.
E outra coisa... o valor é resetado quando a cena é carregada então a tela de GameOver tem que estar na mesma cena.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Pontuacao : MonoBehaviour {
public int pontuacao;
public Text txtpontuacao;
void Awake () {
txtpontuacao = GetComponent<Text>();
pontuacao = 0;
}
void Update () {
txtpontuacao.text = "Pontuação: " + pontuacao;
}
}
Certifique-se de que você tenha colocado este script no texto correspondente aos pontos, lá no canvas.
E outra coisa... o valor é resetado quando a cena é carregada então a tela de GameOver tem que estar na mesma cena.
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Certifique-se de que você tenha colocado este script no texto correspondente aos pontos, lá no Canvas.JorgeLuizxd escreveu:
- Código:
using UnityEngine.UI;
using UnityEngine;
using System.Collections.Generic;
using System.Collections;
public class Pontuacao : MonoBehaviour {
public int pontuacao;
public Text txtpontuacao;
void Awake () {
txtpontuacao = GetComponent<Text>();
pontuacao = 0;
}
void Update () {
txtpontuacao.text = "Pontuação: " + pontuacao;
}
}
E outra coisa... o valor é resetado quando a cena é carregada então a tela de GameOver tem que estar na mesma cena.
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Valeu cara, ótima explicação, mas esse vídeo não responde minha duvida.AndyShow escreveu:Olá Amigo
Recomendo Fortemente Assistir aos Tutoriais no Marcos
Aqui está oque ele Explica tudo Sobre UI (Gui)
RobinF- Iniciante
- PONTOS : 2647
REPUTAÇÃO : 0
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
JorgeLuizxd escreveu:Certifique-se de que você tenha colocado este script no texto correspondente aos pontos, lá no Canvas.JorgeLuizxd escreveu:
- Código:
using UnityEngine.UI;
using UnityEngine;
using System.Collections.Generic;
using System.Collections;
public class Pontuacao : MonoBehaviour {
public int pontuacao;
public Text txtpontuacao;
void Awake () {
txtpontuacao = GetComponent<Text>();
pontuacao = 0;
}
void Update () {
txtpontuacao.text = "Pontuação: " + pontuacao;
}
}
E outra coisa... o valor é resetado quando a cena é carregada então a tela de GameOver tem que estar na mesma cena.
Vlw cara mas ainda não aparece a pontuação no texto da GUI do Game Over. A pontuação só aparece no canvas do jogador. Continua como 0 na GUI. E o script esta adicionado em ambas.
RobinF- Iniciante
- PONTOS : 2647
REPUTAÇÃO : 0
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Queria saber como eu faço para salvar o valor da minha pontuação e chama-la no campo de texto minha GUI de Game Over a partir de outra variável.
Por exemplo a pontuação 200 vai ser salva. Ai eu vou guardar ela em uma variável chamada scorefinal e ai eu vou falar para ela aparecer no campo de texto Pontos Totais na minha GUI quando der gameover.
Por exemplo a pontuação 200 vai ser salva. Ai eu vou guardar ela em uma variável chamada scorefinal e ai eu vou falar para ela aparecer no campo de texto Pontos Totais na minha GUI quando der gameover.
RobinF- Iniciante
- PONTOS : 2647
REPUTAÇÃO : 0
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Manda alguns prints da parte do Canvas/GUI
E você falou a respeito do scoreFinal e pontosTotais que não tem nos scripts que você mandou acima.
Para Fazer os pontos ficar salvos, você pode utilizar o PlayerPrefs.
E você falou a respeito do scoreFinal e pontosTotais que não tem nos scripts que você mandou acima.
Para Fazer os pontos ficar salvos, você pode utilizar o PlayerPrefs.
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
JorgeLuizxd escreveu:Manda alguns prints da parte do Canvas/GUI
E você falou a respeito do scoreFinal e pontosTotais que não tem nos scripts que você mandou acima.
Para Fazer os pontos ficar salvos, você pode utilizar o PlayerPrefs.
Não consigo mandar screenshots aqui.
Eu achei o problema. Minha GUI de GameOver fica desativada e quando meu metodo gameOver é chamado ele ativa ela. A score até funciona lá só que ela não mostra dados nela porque ela fica o tempo todo desativada.
O que eu teria que fazer é arrumar um jeito de usar esse PlayerPrefs para salvar minha pontuação e eu coloco um script no campo de texto da GUI pedindo para mostrar essa pontuação salva.
Olhei vários tutoriais mas não consigo fazer isso, acho que estou fazendo de um jeito totalmente errado, por onde eu começo? estou perdido .
- Código:
public void GameOver()
{
if (!gameOver)
{
gameOver = true;
gameOverMenu.SetActive (true);
}
}
RobinF- Iniciante
- PONTOS : 2647
REPUTAÇÃO : 0
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Ok vou tentar fazer umas adaptações no script e testar aqui na unity, quando funcionar eu te mandou os scripts
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Olha eu aqui de novo :D Fiz a modificações necessárias e testei na unity. E está funcionando.
Eu resumi seus 3 scripts em 2.
Este aqui você coloca no texto que vai mostrar a pontuação:
Fique de olho se apresenta no console: "Inimigo recebeu um tiro", quando ele levar tiro.
Se apresentar é porque tá funcionando perfeitamente.
OBS: Se não funcionar, então está relacionado com o método PerderVida() que não está detectando as colisões.
Dai você troca esta parte aqui:
void PerderVida(Collider2D outro){
Por esta aqui:
void OnCollisionEnter2D(Collision2D outro){
Eu resumi seus 3 scripts em 2.
Este aqui você coloca no texto que vai mostrar a pontuação:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Score : MonoBehaviour {
public string nome;
void Update () {
//recebe a pontuaçao e mostra para o jogador
GetComponent<Text> ().text = PlayerPrefs.GetInt (nome)+"";
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Inimigo : MonoBehaviour {
[SerializeField]
private int minValorPontos;
[SerializeField]
private int maxValorPontos;
private int valorInimigo;
private int pontuacao=0;
//Criei esta variavel "vida" apenas pra testar o script. Se quiser apagar ela, pode apagar
int vida =100;
void Start () {
//Coloque este PlayerPrefs.SetInt("Pontos",0); no script do Player, dentro do metodo Start()
PlayerPrefs.SetInt ("Pontos", 0);
//toda vez que o player entra no jogo, a pontuaçao e zerada
}
void SalvaScore()
{
//metodo responsavel por guardar os pontos
PlayerPrefs.SetInt("Pontos",PlayerPrefs.GetInt("Pontos")+GetScore());
}
int GetScore(){
//metodo responsavel por decidir quantos pontos o player vai ganhar
valorInimigo = Random.Range (minValorPontos, maxValorPontos);
pontuacao+=valorInimigo;
//retorna a pontuaçao que o player vai ganhar
return pontuacao;
}
void PerderVida(Collider2D outro){
//Metodo que verifica se houve colisao no inimigo
if (outro.gameObject.tag == "Tiro") {
Debug.Log("Inimigo recebeu um Tiro");
if (vida > 0) {
vida--;
//Ative se quiser saber quanto o inimigo perde de vida por Tiro. Basta tirar o //
//Debug.Log("Vida: "+vida);
}
if (vida <= 0) {
//destroi o inimigo quando a vida for menor ou igual a 0
Destroy (gameObject);
//chama o metodo SalvaScore() para que o player ganhe os pontos
SalvaScore ();
}
//destroi a bala, depois que acertar o inimigo
Destroy (outro.gameObject);
}
}
}
Fique de olho se apresenta no console: "Inimigo recebeu um tiro", quando ele levar tiro.
Se apresentar é porque tá funcionando perfeitamente.
OBS: Se não funcionar, então está relacionado com o método PerderVida() que não está detectando as colisões.
Dai você troca esta parte aqui:
void PerderVida(Collider2D outro){
Por esta aqui:
void OnCollisionEnter2D(Collision2D outro){
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Continue utilizando o script GameOver
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Quando vc por o script Score, no texto que vai mostrar a pontuação, vai mostrar um campo Escrito "Nome" dai você digita "Pontos"
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
JorgeLuizxd escreveu:Olha eu aqui de novo :D Fiz a modificações necessárias e testei na unity. E está funcionando.
Eu resumi seus 3 scripts em 2.
Este aqui você coloca no texto que vai mostrar a pontuação:Este aqui é o Script "Inimigo":
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Score : MonoBehaviour {
public string nome;
void Update () {
//recebe a pontuaçao e mostra para o jogador
GetComponent<Text> ().text = PlayerPrefs.GetInt (nome)+"";
}
}E é isso. Espero que te ajude. :D
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Inimigo : MonoBehaviour {
[SerializeField]
private int minValorPontos;
[SerializeField]
private int maxValorPontos;
private int valorInimigo;
private int pontuacao=0;
//Criei esta variavel "vida" apenas pra testar o script. Se quiser apagar ela, pode apagar
int vida =100;
void Start () {
//Coloque este PlayerPrefs.SetInt("Pontos",0); no script do Player, dentro do metodo Start()
PlayerPrefs.SetInt ("Pontos", 0);
//toda vez que o player entra no jogo, a pontuaçao e zerada
}
void SalvaScore()
{
//metodo responsavel por guardar os pontos
PlayerPrefs.SetInt("Pontos",PlayerPrefs.GetInt("Pontos")+GetScore());
}
int GetScore(){
//metodo responsavel por decidir quantos pontos o player vai ganhar
valorInimigo = Random.Range (minValorPontos, maxValorPontos);
pontuacao+=valorInimigo;
//retorna a pontuaçao que o player vai ganhar
return pontuacao;
}
void PerderVida(Collider2D outro){
//Metodo que verifica se houve colisao no inimigo
if (outro.gameObject.tag == "Tiro") {
Debug.Log("Inimigo recebeu um Tiro");
if (vida > 0) {
vida--;
//Ative se quiser saber quanto o inimigo perde de vida por Tiro. Basta tirar o //
//Debug.Log("Vida: "+vida);
}
if (vida <= 0) {
//destroi o inimigo quando a vida for menor ou igual a 0
Destroy (gameObject);
//chama o metodo SalvaScore() para que o player ganhe os pontos
SalvaScore ();
}
//destroi a bala, depois que acertar o inimigo
Destroy (outro.gameObject);
}
}
}
Fique de olho se apresenta no console: "Inimigo recebeu um tiro", quando ele levar tiro.
Se apresentar é porque tá funcionando perfeitamente.
OBS: Se não funcionar, então está relacionado com o método PerderVida() que não está detectando as colisões.
Dai você troca esta parte aqui:
void PerderVida(Collider2D outro){
Por esta aqui:
void OnCollisionEnter2D(Collision2D outro){
Nossa vlw msmo cara, deu certo :D
RobinF- Iniciante
- PONTOS : 2647
REPUTAÇÃO : 0
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
:D Pronto agora o posto foi resolvido
JorgeLuizxd- Membro
- PONTOS : 2885
REPUTAÇÃO : 2
Respeito as regras :
Re: Como Colocar Pontuação Final na GUI de GAME OVER
eu to com um problema to tentando mostrar a pontuação na tela de game over mais não consigo .como eu faço?
PBG- Iniciante
- PONTOS : 2416
REPUTAÇÃO : 0
Re: Como Colocar Pontuação Final na GUI de GAME OVER
Poderia dizer qual o problema e o script juntos?
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 :
Tópicos semelhantes
» Mostrar Pontuação no game over
» Mostrar Pontuação No Game Over
» Unity editor lento, mas game final não
» Como posso alterar as configuraçoes de texturas do game em game?
» Gostaria de saber se já tem como colocar esse carro como mod no Spintires Mudrunners
» Mostrar Pontuação No Game Over
» Unity editor lento, mas game final não
» Como posso alterar as configuraçoes de texturas do game em game?
» Gostaria de saber se já tem como colocar esse carro como mod no Spintires Mudrunners
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos