Ranking com nome
+3
googolepton
recagonlei
jamaisfiih
7 participantes
Página 1 de 1
Ranking com nome
Olá pessoal,
Eu desenvolvi um jogo no estilo endless running(corrida infinita), igual ao jogo do T-rex do google chrome, porém meu jogo só mostra a pontuação atual e a melhor pontuação já alcançada na tela, se caso a atual ultrapassar a melhor, ela já substitui na hora. Eu gostaria de implementar um ranking ao final do game, onde o jogador coloca seu nome e sua pontuação fica salva no ranking, com pelo menos umas 10 colocações. Gostaria que fosse local mesmo.
Se alguem puder me indicar um tutorial pra isso ou me ajudar a fazer isso eu ficaria muito agradecido.
Obrigado desde já.
Eu desenvolvi um jogo no estilo endless running(corrida infinita), igual ao jogo do T-rex do google chrome, porém meu jogo só mostra a pontuação atual e a melhor pontuação já alcançada na tela, se caso a atual ultrapassar a melhor, ela já substitui na hora. Eu gostaria de implementar um ranking ao final do game, onde o jogador coloca seu nome e sua pontuação fica salva no ranking, com pelo menos umas 10 colocações. Gostaria que fosse local mesmo.
Se alguem puder me indicar um tutorial pra isso ou me ajudar a fazer isso eu ficaria muito agradecido.
Obrigado desde já.
jamaisfiih- Iniciante
- PONTOS : 2597
REPUTAÇÃO : 1
Respeito as regras :
Re: Ranking com nome
Com apenas uma lista com os 10 melhores scores(ou no caso uma lista vazia com 10 slots), um inputfield e um comparador fará esse trampo pra ti tranquilo...
Re: Ranking com nome
Eu não iria precisar de um banco? Pois eu estava seguindo um tutorial com SQLite só que eu estou com dificuldades de implementar junto ao meu jogo.recagonlei escreveu:Com apenas uma lista com os 10 melhores scores(ou no caso uma lista vazia com 10 slots), um inputfield e um comparador fará esse trampo pra ti tranquilo...
Você teria algum exemplo desse inputfield para me passar por favor? Obrigado!!
jamaisfiih- Iniciante
- PONTOS : 2597
REPUTAÇÃO : 1
Respeito as regras :
Re: Ranking com nome
jamaisfiih escreveu:Eu não iria precisar de um banco? Pois eu estava seguindo um tutorial com SQLite só que eu estou com dificuldades de implementar junto ao meu jogo.recagonlei escreveu:Com apenas uma lista com os 10 melhores scores(ou no caso uma lista vazia com 10 slots), um inputfield e um comparador fará esse trampo pra ti tranquilo...
Você teria algum exemplo desse inputfield para me passar por favor? Obrigado!!
Eu gostaria que, além de salvar a melhor pontuação com o nome, também fosse substituindo as pontuações anteriores.
jamaisfiih- Iniciante
- PONTOS : 2597
REPUTAÇÃO : 1
Respeito as regras :
Re: Ranking com nome
jamaisfiih escreveu:jamaisfiih escreveu:Eu não iria precisar de um banco? Pois eu estava seguindo um tutorial com SQLite só que eu estou com dificuldades de implementar junto ao meu jogo.recagonlei escreveu:Com apenas uma lista com os 10 melhores scores(ou no caso uma lista vazia com 10 slots), um inputfield e um comparador fará esse trampo pra ti tranquilo...
Você teria algum exemplo desse inputfield para me passar por favor? Obrigado!!
Eu gostaria que, além de salvar a melhor pontuação com o nome, também fosse substituindo as pontuações anteriores.
Um método bem simples:
- Código:
public List<int> m_listScore = new List<int>();
void CheckScore(score){
for(int i = 0; i < m_listScore.Count; i++){
if(score >= m_listScore[i]){
m_listScore.Insert(i, score);
m_listScore.Remove(System.Linq.Enumerable.Last(m_listScore));
}
}
}
Bem simples, mas pode te ajudar... Veja se funciona certinho! Para incluir nomes é só usar uma custom class com valor inteiro e uma string e na hora que adicionar o score, passe a string com o nome...
Re: Ranking com nome
vc poderia usar playerprefs, ai nao precisaria usar banco de dadosjamaisfiih escreveu:jamaisfiih escreveu:Eu não iria precisar de um banco? Pois eu estava seguindo um tutorial com SQLite só que eu estou com dificuldades de implementar junto ao meu jogo.recagonlei escreveu:Com apenas uma lista com os 10 melhores scores(ou no caso uma lista vazia com 10 slots), um inputfield e um comparador fará esse trampo pra ti tranquilo...
Você teria algum exemplo desse inputfield para me passar por favor? Obrigado!!
Eu gostaria que, além de salvar a melhor pontuação com o nome, também fosse substituindo as pontuações anteriores.
veja o video
googolepton- Avançado
- PONTOS : 2791
REPUTAÇÃO : 38
Respeito as regras :
Re: Ranking com nome
Desculpe não ter respondido sobre as outras dúvidas, pois eu não queria floopar e esperei alguém comentar...recagonlei escreveu:jamaisfiih escreveu:jamaisfiih escreveu:Eu não iria precisar de um banco? Pois eu estava seguindo um tutorial com SQLite só que eu estou com dificuldades de implementar junto ao meu jogo.recagonlei escreveu:Com apenas uma lista com os 10 melhores scores(ou no caso uma lista vazia com 10 slots), um inputfield e um comparador fará esse trampo pra ti tranquilo...
Você teria algum exemplo desse inputfield para me passar por favor? Obrigado!!
Eu gostaria que, além de salvar a melhor pontuação com o nome, também fosse substituindo as pontuações anteriores.
Um método bem simples:
- Código:
public List<int> m_listScore = new List<int>(10);
void CheckScore(score){
for(int i = 0; i < m_listScore.Count; i++){
if(score >= m_listScore[i]){
m_listScore.Insert(i, score);
m_listScore.Remove(System.Linq.Enumerable.Last(m_listScore));
break;
}
}
}
Bem simples, mas pode te ajudar... Veja se funciona certinho! Para incluir nomes é só usar uma custom class com valor inteiro e uma string e na hora que adicionar o score, passe a string com o nome...
O inputField(Campo de entrada)é um elemento do Ui da Unity, que serve para inserir valores... Veja nesse link que irá explicar melhor para ti.
https://docs.unity3d.com/Manual/script-InputField.html
Em junção com o código acima irá fazer um trabalho legal... E no caso eu esqueci de citar, que você deve cachear a lista com 10 valores pré definidos, mesmo que sejam todos 0, para que não ocorra algum bug ou algo do tipo... E no código esqueci de dar um break conforme atualizar o score.
Re: Ranking com nome
Você poderia me ajudar na implementação? É que realmente eu não tenho experiencia nenhuma nisso, o jogo que eu fiz foi tudo a base de tutoriais e eu vou usar ele em um projeto da faculdade.
Segue o script da minha pontuação. Obs:As variaveis em ingles é justamente por causa dos tutoriais, fiquei com medo de alterar algo que pudesse acarretar em algum erro
Segue o script da minha pontuação. Obs:As variaveis em ingles é justamente por causa dos tutoriais, fiquei com medo de alterar algo que pudesse acarretar em algum erro
- Código:
public class ScoreManager : MonoBehaviour {
public Text scoreText;
public Text hiScoreText;
public float scoreCount;
public float hiScoreCount;
public float pointsPerSecond;
public bool scoreIncreasing;
public bool shouldDouble;
void Start () {
if (PlayerPrefs.HasKey ("MaiorPontuacao"))
{
hiScoreCount = PlayerPrefs.GetFloat ("MaiorPontuacao");
}
}
void Update () {
if (scoreIncreasing)
{
scoreCount += pointsPerSecond * Time.deltaTime;
}
if (scoreCount > hiScoreCount)
{
hiScoreCount = scoreCount;
PlayerPrefs.SetFloat ("HighScore", hiScoreCount);
}
scoreText.text = "Score: " + Mathf.Round (scoreCount);
hiScoreText.text = "High Score: " + Mathf.Round (hiScoreCount);
}
public void AddScore(int pointsToAdd)
{
if (shouldDouble)
{
pointsToAdd = pointsToAdd * 2;
}
scoreCount += pointsToAdd;
}
}
jamaisfiih- Iniciante
- PONTOS : 2597
REPUTAÇÃO : 1
Respeito as regras :
Re: Ranking com nome
Primeiramente tu ajeita o inputField com o Ui certinho para colocar o nome no final...jamaisfiih escreveu:Você poderia me ajudar na implementação? É que realmente eu não tenho experiencia nenhuma nisso, o jogo que eu fiz foi tudo a base de tutoriais e eu vou usar ele em um projeto da faculdade.
Segue o script da minha pontuação. Obs:As variaveis em ingles é justamente por causa dos tutoriais, fiquei com medo de alterar algo que pudesse acarretar em algum erro
- Código:
public class ScoreManager : MonoBehaviour {
public Text scoreText;
public Text hiScoreText;
public float scoreCount;
public float hiScoreCount;
public float pointsPerSecond;
public bool scoreIncreasing;
public bool shouldDouble;
void Start () {
if (PlayerPrefs.HasKey ("MaiorPontuacao"))
{
hiScoreCount = PlayerPrefs.GetFloat ("MaiorPontuacao");
}
}
void Update () {
if (scoreIncreasing)
{
scoreCount += pointsPerSecond * Time.deltaTime;
}
if (scoreCount > hiScoreCount)
{
hiScoreCount = scoreCount;
PlayerPrefs.SetFloat ("HighScore", hiScoreCount);
}
scoreText.text = "Score: " + Mathf.Round (scoreCount);
hiScoreText.text = "High Score: " + Mathf.Round (hiScoreCount);
}
public void AddScore(int pointsToAdd)
{
if (shouldDouble)
{
pointsToAdd = pointsToAdd * 2;
}
scoreCount += pointsToAdd;
}
}
Deve-se importar a classe Ui para referir o elemento:
- Código:
using UnityEngine.UI;
Depois você declara:
- Código:
public InputField m_inputField;
Você associa no editor. Depois você cria um método que é ligado, sempre que terminar o game e aparecer a lista de score, nele você vai comparar o score que tu fez, com os outros cacheados...
Quando declarar a lista com os score, você deverá pegar todos os scores salvos e tudo mais, suponhamos que seja a primeira execução e não tem nenhum dado, todos os 10 valores será 0 no caso.
- Código:
public List<int> m_listScore = new List<int>(10);[size=14][/size]
Quando terminar, você terá o Ui com o inputField, mostrando o score que tu fez e provavelmente um botão para quando colocar seu nome caso seja melhor que os outros, correto?
No botão, adicione um evento para ser ativado quando for clicado e contando que tenha feito a verificação antes com o código que citei, se tem um score maior que os outros. Uma pequena modificação que pode ficar mais fácil para lhe ajudar abaixo. Quando terminar, só checa o bool com o score, caso seja, você passa para o outro método, que eu citei, com o input e tals...
- Código:
bool CheckScore(int score){[size=14][/size]
for(int i = 0; i < m_listScore.Count; i++){[size=14][/size] if(score >= m_listScore[i]){[size=14][/size] m_listScore.Insert(i, score);[size=14][/size] m_listScore.Remove(System.Linq.Enumerable.Last(m_listScore));[size=14][/size] return true;[size=14][/size]
}[size=14][/size] }
return false;}
Caso esse valor retorne verdadeiro, você faz isso para que consiga acessar o nome colocado no input, depois o resto é contigo!
- Código:
void PutNameOnScore(InputField input){
string tempText = input.text;
if(tempText == "")
return;
Debug.Log("My name is: " + tempText + " and my score is: " + scoreCount );
}
Quando adicionar o evento no botão, adicione o inputField que tu criou no espaço do parâmetro, que assim consiga acessa-lo... Qualquer dúvida, de um toque...
Re: Ranking com nome
recagonlei escreveu:Primeiramente tu ajeita o inputField com o Ui certinho para colocar o nome no final...jamaisfiih escreveu:Você poderia me ajudar na implementação? É que realmente eu não tenho experiencia nenhuma nisso, o jogo que eu fiz foi tudo a base de tutoriais e eu vou usar ele em um projeto da faculdade.
Segue o script da minha pontuação. Obs:As variaveis em ingles é justamente por causa dos tutoriais, fiquei com medo de alterar algo que pudesse acarretar em algum erro
- Código:
public class ScoreManager : MonoBehaviour {
public Text scoreText;
public Text hiScoreText;
public float scoreCount;
public float hiScoreCount;
public float pointsPerSecond;
public bool scoreIncreasing;
public bool shouldDouble;
void Start () {
if (PlayerPrefs.HasKey ("MaiorPontuacao"))
{
hiScoreCount = PlayerPrefs.GetFloat ("MaiorPontuacao");
}
}
void Update () {
if (scoreIncreasing)
{
scoreCount += pointsPerSecond * Time.deltaTime;
}
if (scoreCount > hiScoreCount)
{
hiScoreCount = scoreCount;
PlayerPrefs.SetFloat ("HighScore", hiScoreCount);
}
scoreText.text = "Score: " + Mathf.Round (scoreCount);
hiScoreText.text = "High Score: " + Mathf.Round (hiScoreCount);
}
public void AddScore(int pointsToAdd)
{
if (shouldDouble)
{
pointsToAdd = pointsToAdd * 2;
}
scoreCount += pointsToAdd;
}
}
Deve-se importar a classe Ui para referir o elemento:
- Código:
using UnityEngine.UI;
Depois você declara:
- Código:
public InputField m_inputField;
Você associa no editor. Depois você cria um método que é ligado, sempre que terminar o game e aparecer a lista de score, nele você vai comparar o score que tu fez, com os outros cacheados...
Quando declarar a lista com os score, você deverá pegar todos os scores salvos e tudo mais, suponhamos que seja a primeira execução e não tem nenhum dado, todos os 10 valores será 0 no caso.
- Código:
public List<int> m_listScore = new List<int>(10);[size=14][/size]
Quando terminar, você terá o Ui com o inputField, mostrando o score que tu fez e provavelmente um botão para quando colocar seu nome caso seja melhor que os outros, correto?
No botão, adicione um evento para ser ativado quando for clicado e contando que tenha feito a verificação antes com o código que citei, se tem um score maior que os outros. Uma pequena modificação que pode ficar mais fácil para lhe ajudar abaixo. Quando terminar, só checa o bool com o score, caso seja, você passa para o outro método, que eu citei, com o input e tals...
- Código:
bool CheckScore(int score){[size=14][/size]
for(int i = 0; i < m_listScore.Count; i++){[size=14][/size] if(score >= m_listScore[i]){[size=14][/size] m_listScore.Insert(i, score);[size=14][/size] m_listScore.Remove(System.Linq.Enumerable.Last(m_listScore));[size=14][/size] return true;[size=14][/size]
}[size=14][/size] }
return false;}
Caso esse valor retorne verdadeiro, você faz isso para que consiga acessar o nome colocado no input, depois o resto é contigo!
- Código:
void PutNameOnScore(InputField input){
string tempText = input.text;
if(tempText == "")
return;
Debug.Log("My name is: " + tempText + " and my score is: " + scoreCount );
}
Quando adicionar o evento no botão, adicione o inputField que tu criou no espaço do parâmetro, que assim consiga acessa-lo... Qualquer dúvida, de um toque...
Eu vou tentar fazer seguindo os passos que você passou, vou quebrar a cabeça um pouquinho. Qualquer coisa eu volto rsrs. Mas desde já eu agradeço pela atenção. Muito obrigado amigo, abraços!!!
jamaisfiih- Iniciante
- PONTOS : 2597
REPUTAÇÃO : 1
Respeito as regras :
Re: Ranking com nome
Não há de que, espero que consiga... Alguns códigos ficaram zoados, quando eu copiei e colei e não percebi... Mas dá para entender bemjamaisfiih escreveu:recagonlei escreveu:Primeiramente tu ajeita o inputField com o Ui certinho para colocar o nome no final...jamaisfiih escreveu:Você poderia me ajudar na implementação? É que realmente eu não tenho experiencia nenhuma nisso, o jogo que eu fiz foi tudo a base de tutoriais e eu vou usar ele em um projeto da faculdade.
Segue o script da minha pontuação. Obs:As variaveis em ingles é justamente por causa dos tutoriais, fiquei com medo de alterar algo que pudesse acarretar em algum erro
- Código:
public class ScoreManager : MonoBehaviour {
public Text scoreText;
public Text hiScoreText;
public float scoreCount;
public float hiScoreCount;
public float pointsPerSecond;
public bool scoreIncreasing;
public bool shouldDouble;
void Start () {
if (PlayerPrefs.HasKey ("MaiorPontuacao"))
{
hiScoreCount = PlayerPrefs.GetFloat ("MaiorPontuacao");
}
}
void Update () {
if (scoreIncreasing)
{
scoreCount += pointsPerSecond * Time.deltaTime;
}
if (scoreCount > hiScoreCount)
{
hiScoreCount = scoreCount;
PlayerPrefs.SetFloat ("HighScore", hiScoreCount);
}
scoreText.text = "Score: " + Mathf.Round (scoreCount);
hiScoreText.text = "High Score: " + Mathf.Round (hiScoreCount);
}
public void AddScore(int pointsToAdd)
{
if (shouldDouble)
{
pointsToAdd = pointsToAdd * 2;
}
scoreCount += pointsToAdd;
}
}
Deve-se importar a classe Ui para referir o elemento:
- Código:
using UnityEngine.UI;
Depois você declara:
- Código:
public InputField m_inputField;
Você associa no editor. Depois você cria um método que é ligado, sempre que terminar o game e aparecer a lista de score, nele você vai comparar o score que tu fez, com os outros cacheados...
Quando declarar a lista com os score, você deverá pegar todos os scores salvos e tudo mais, suponhamos que seja a primeira execução e não tem nenhum dado, todos os 10 valores será 0 no caso.
- Código:
public List<int> m_listScore = new List<int>(10);[size=14][/size]
Quando terminar, você terá o Ui com o inputField, mostrando o score que tu fez e provavelmente um botão para quando colocar seu nome caso seja melhor que os outros, correto?
No botão, adicione um evento para ser ativado quando for clicado e contando que tenha feito a verificação antes com o código que citei, se tem um score maior que os outros. Uma pequena modificação que pode ficar mais fácil para lhe ajudar abaixo. Quando terminar, só checa o bool com o score, caso seja, você passa para o outro método, que eu citei, com o input e tals...
- Código:
bool CheckScore(int score){[size=14][/size]
for(int i = 0; i < m_listScore.Count; i++){[size=14][/size] if(score >= m_listScore[i]){[size=14][/size] m_listScore.Insert(i, score);[size=14][/size] m_listScore.Remove(System.Linq.Enumerable.Last(m_listScore));[size=14][/size] return true;[size=14][/size]
}[size=14][/size] }
return false;}
Caso esse valor retorne verdadeiro, você faz isso para que consiga acessar o nome colocado no input, depois o resto é contigo!
- Código:
void PutNameOnScore(InputField input){
string tempText = input.text;
if(tempText == "")
return;
Debug.Log("My name is: " + tempText + " and my score is: " + scoreCount );
}
Quando adicionar o evento no botão, adicione o inputField que tu criou no espaço do parâmetro, que assim consiga acessa-lo... Qualquer dúvida, de um toque...
Eu vou tentar fazer seguindo os passos que você passou, vou quebrar a cabeça um pouquinho. Qualquer coisa eu volto rsrs. Mas desde já eu agradeço pela atenção. Muito obrigado amigo, abraços!!!
No caso desse, tá meio punk a identação kakaka código arrumado que vai ficar mais fácil a compreensão:
- Código:
bool CheckScore(int score){[size=14][/size] for(int i = 0; i < m_listScore.Count; i++){
if(score >= m_listScore[i]){
m_listScore.Insert(i, score);
m_listScore.Remove(System.Linq.Enumerable.Last(m_listScore));
return true;[size=14][/size] }
}return false;
}
Re: Ranking com nome
Por favor galera alguém poderia me ajudar a levar estes valores para um Ranking...
Observei o dados acima, mas o meu caso é um pouco diferente e não estou conseguindo adaptá-lo.
Onde estou...
Quando eu printo aparece assim:
JOGADOR---> oilson ---NOTA---> 82...
Só que eu gostaria de levar estes valores para o seguinte tema. Parte "RANKING", e organizar as posições segundo a pontuação deles... Se possível os 10 melhores.
Algum filho de Deus se habilita...
Observei o dados acima, mas o meu caso é um pouco diferente e não estou conseguindo adaptá-lo.
Onde estou...
- Código:
PlayerPrefs.SetInt ("notaPerguntas_" + idTema.ToString() + Nomes, (int)notaPerguntas);
Quando eu printo aparece assim:
JOGADOR---> oilson ---NOTA---> 82...
Só que eu gostaria de levar estes valores para o seguinte tema. Parte "RANKING", e organizar as posições segundo a pontuação deles... Se possível os 10 melhores.
Algum filho de Deus se habilita...
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
Pegue o valor, veja se é apto para entrar no ranking(cheque os valores já existente com um for) e adicione caso seja possível. Depois só criar um Ui e ir passando os valores de acordo!
https://www.schultzgames.com/t5665-tutorial-ordenar-valores-de-uma-array-em-ordem-crescente-ou-decrescente
https://www.schultzgames.com/t5665-tutorial-ordenar-valores-de-uma-array-em-ordem-crescente-ou-decrescente
Re: Ranking com nome
Mil desculpas mano pela minha falta de entendimento, mas teria como vc me explicar passo a passo, por favor...recagonlei escreveu:Pegue o valor, veja se é apto para entrar no ranking(cheque os valores já existente com um for) e adicione caso seja possível. Depois só criar um Ui e ir passando os valores de acordo!
https://www.schultzgames.com/t5665-tutorial-ordenar-valores-de-uma-array-em-ordem-crescente-ou-decrescente
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
Pergunta boba!!! Mas estive pensando, como os valores já estão gravados em algum lugar do "PlayerPrefs", não teria como eu pedir nesta tela de login no start para ele procurar todos os nomes gravados no "PlayerPrefs" e seus respectivos valores e setar abaixo no rank...oilson escreveu:Mil desculpas mano pela minha falta de entendimento, mas teria como vc me explicar passo a passo, por favor...recagonlei escreveu:Pegue o valor, veja se é apto para entrar no ranking(cheque os valores já existente com um for) e adicione caso seja possível. Depois só criar um Ui e ir passando os valores de acordo!
https://www.schultzgames.com/t5665-tutorial-ordenar-valores-de-uma-array-em-ordem-crescente-ou-decrescente
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
https://www.schultzgames.com/t6351-resolvido-como-criar-varias-contas-em-um-jogo-como-playerprefs#44727
Você pode usar esse exemplo... É para criar contas, mas se modificar para em vez de registrar user e senha, tu registrar o nome e o valor, fará o mesmo resultado... E depois cacheie todos os valores em uma lista e aplique aquele outro tuto!
Você pode usar esse exemplo... É para criar contas, mas se modificar para em vez de registrar user e senha, tu registrar o nome e o valor, fará o mesmo resultado... E depois cacheie todos os valores em uma lista e aplique aquele outro tuto!
Re: Ranking com nome
OK... Vou tentar aqui manin, mas já valeu por ter me dado um rumo mais concreto...recagonlei escreveu:https://www.schultzgames.com/t6351-resolvido-como-criar-varias-contas-em-um-jogo-como-playerprefs#44727
Você pode usar esse exemplo... É para criar contas, mas se modificar para em vez de registrar user e senha, tu registrar o nome e o valor, fará o mesmo resultado... E depois cacheie todos os valores em uma lista e aplique aquele outro tuto!
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
recagonlei escreveu:https://www.schultzgames.com/t6351-resolvido-como-criar-varias-contas-em-um-jogo-como-playerprefs#44727
Você pode usar esse exemplo... É para criar contas, mas se modificar para em vez de registrar user e senha, tu registrar o nome e o valor, fará o mesmo resultado... E depois cacheie todos os valores em uma lista e aplique aquele outro tuto!
Tentei de várias formas, mas não consegui. Tem como vc modificar ele para mim mano.. Sei que é pedir demais, mas se for possível eu agradeço muito... Só falta esta parte para fechar o joguinho.
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RankingController{
public static int numberRecords = 5;
private static string oldName;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public static void AddToRanking (int score)
{
int[] rankingValues = GetRanking ();
int positionRanking = -1;
for (int i = 0; i < numberRecords; i++)
{
if (score > rankingValues[i])
{
positionRanking = i;
}
}
if (positionRanking != -1)
{
int oldRecord = rankingValues [positionRanking];
string oldName = PlayerPrefs.GetString ("NameRanking" + positionRanking);
string nameToRecord = PlayerPrefs.GetString ("namePlayer");
if (oldName != "")
{
nameToRecord = oldName;
oldName = ""; //Se o nome anterior estiver vazio, significa que estarei gravando um novo nome
}
PlayerPrefs.SetInt ("Ranking" + positionRanking, score);
PlayerPrefs.SetString ("NameRanking" + positionRanking, nameToRecord);
AddToRanking (oldRecord);
}
}
public static string GetRankingFormated()
{
string[] ranking = new string[numberRecords];
string rankingToReturn = "";
for (int i = numberRecords-1; i >= 0; i--)
{
ranking [i] = PlayerPrefs.GetString ("NameRanking" + i)+ " - "+ PlayerPrefs.GetInt ("Ranking" + i);
if(PlayerPrefs.GetString("NameRanking"+i) != "")
rankingToReturn += ranking [i] + "\n";
}
return rankingToReturn;
}
public static int[] GetRanking()
{
int[] rankingValues = new int[numberRecords];
for (int i = 0; i < numberRecords; i++)
{
rankingValues [i] = PlayerPrefs.GetInt ("Ranking" + i);
}
return rankingValues;
}
}
Tenho esse script de Ranking com nome Aqui;
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Ranking com nome
Valeu amigo por compartilhar vou testar aqui...Phph09 escreveu:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RankingController{
public static int numberRecords = 5;
private static string oldName;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public static void AddToRanking (int score)
{
int[] rankingValues = GetRanking ();
int positionRanking = -1;
for (int i = 0; i < numberRecords; i++)
{
if (score > rankingValues[i])
{
positionRanking = i;
}
}
if (positionRanking != -1)
{
int oldRecord = rankingValues [positionRanking];
string oldName = PlayerPrefs.GetString ("NameRanking" + positionRanking);
string nameToRecord = PlayerPrefs.GetString ("namePlayer");
if (oldName != "")
{
nameToRecord = oldName;
oldName = ""; //Se o nome anterior estiver vazio, significa que estarei gravando um novo nome
}
PlayerPrefs.SetInt ("Ranking" + positionRanking, score);
PlayerPrefs.SetString ("NameRanking" + positionRanking, nameToRecord);
AddToRanking (oldRecord);
}
}
public static string GetRankingFormated()
{
string[] ranking = new string[numberRecords];
string rankingToReturn = "";
for (int i = numberRecords-1; i >= 0; i--)
{
ranking [i] = PlayerPrefs.GetString ("NameRanking" + i)+ " - "+ PlayerPrefs.GetInt ("Ranking" + i);
if(PlayerPrefs.GetString("NameRanking"+i) != "")
rankingToReturn += ranking [i] + "\n";
}
return rankingToReturn;
}
public static int[] GetRanking()
{
int[] rankingValues = new int[numberRecords];
for (int i = 0; i < numberRecords; i++)
{
rankingValues [i] = PlayerPrefs.GetInt ("Ranking" + i);
}
return rankingValues;
}
}
Tenho esse script de Ranking com nome Aqui;
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
ELE não tem o "MonoBehaviour" ou vc esqueceu na hora de colar?Phph09 escreveu:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RankingController{
public static int numberRecords = 5;
private static string oldName;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public static void AddToRanking (int score)
{
int[] rankingValues = GetRanking ();
int positionRanking = -1;
for (int i = 0; i < numberRecords; i++)
{
if (score > rankingValues[i])
{
positionRanking = i;
}
}
if (positionRanking != -1)
{
int oldRecord = rankingValues [positionRanking];
string oldName = PlayerPrefs.GetString ("NameRanking" + positionRanking);
string nameToRecord = PlayerPrefs.GetString ("namePlayer");
if (oldName != "")
{
nameToRecord = oldName;
oldName = ""; //Se o nome anterior estiver vazio, significa que estarei gravando um novo nome
}
PlayerPrefs.SetInt ("Ranking" + positionRanking, score);
PlayerPrefs.SetString ("NameRanking" + positionRanking, nameToRecord);
AddToRanking (oldRecord);
}
}
public static string GetRankingFormated()
{
string[] ranking = new string[numberRecords];
string rankingToReturn = "";
for (int i = numberRecords-1; i >= 0; i--)
{
ranking [i] = PlayerPrefs.GetString ("NameRanking" + i)+ " - "+ PlayerPrefs.GetInt ("Ranking" + i);
if(PlayerPrefs.GetString("NameRanking"+i) != "")
rankingToReturn += ranking [i] + "\n";
}
return rankingToReturn;
}
public static int[] GetRanking()
{
int[] rankingValues = new int[numberRecords];
for (int i = 0; i < numberRecords; i++)
{
rankingValues [i] = PlayerPrefs.GetInt ("Ranking" + i);
}
return rankingValues;
}
}
Tenho esse script de Ranking com nome Aqui;
No meu caso gostaria de colocá-lo logo abaixo da tela de login. Vc poderia me ajudar a fazer isso por favor?
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
aproveitando o topico, gostaria de saber o que é um ranking local.
existe ranking local e ranking online?
como é cada um? pretendo fazer um sistema de ranking depois
existe ranking local e ranking online?
como é cada um? pretendo fazer um sistema de ranking depois
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Ranking com nome
Ranking local os dados do jogador ficam salvos no aparelho, não precisa de internet para ver ele ou atualizá-lo. Porém o local só rankeia os jogadores que jogarem no aparelho especifico ele não compara o resultado com quem joga o jogo em outros aparelhos. Já no oline como o nome já diz tem que ter conecção com a internet e são rankeados todos os jogadores do jogo independente do aparelho que jogou... Pelo menos eu entendo assim.Flávio escreveu:aproveitando o topico, gostaria de saber o que é um ranking local.
existe ranking local e ranking online?
como é cada um? pretendo fazer um sistema de ranking depois
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
Se quer Highscores online voce pode usar a API da GameJolt que suporta trofeu e achievements, ou, usar o Dreamlo ou ainda desenvolver seu proprio sistema usando MySQL e algum web host free =)
Re: Ranking com nome
eu fiz um em um projeto meu que foi cancelado, usando MySQL e Php;
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Ranking com nome
Hum! Mas teria como vc me ajudar a modificar este seu Script e implantar no meu projeto... Só falta esta parte para finalizá-lo.Phph09 escreveu:eu fiz um em um projeto meu que foi cancelado, usando MySQL e Php;
oilson- Membro
- PONTOS : 2610
REPUTAÇÃO : 2
Respeito as regras :
Re: Ranking com nome
oilson escreveu:Ranking local os dados do jogador ficam salvos no aparelho, não precisa de internet para ver ele ou atualizá-lo. Porém o local só rankeia os jogadores que jogarem no aparelho especifico ele não compara o resultado com quem joga o jogo em outros aparelhos. Já no oline como o nome já diz tem que ter conecção com a internet e são rankeados todos os jogadores do jogo independente do aparelho que jogou... Pelo menos eu entendo assim.Flávio escreveu:aproveitando o topico, gostaria de saber o que é um ranking local.
existe ranking local e ranking online?
como é cada um? pretendo fazer um sistema de ranking depois
Eu pensei em fazer um ranking desse tipo online entao, que pega as pontuações de qualquer dispotivo, seja pc, xbox, android...
pensei em um ranking de 20 colocações a tela de ranking vai ter entao dois paineis, 10 lugares para um e dez para o outro.
quem for conseguindo pontuações maiores vai subindo de colocação.
nesse caso como que eu tenho que fazer ?
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Tópicos semelhantes
» Ranking
» Ranking
» Sistema de Ranking
» Criar Ranking Online
» [ Duvida Unity 5.3 ] Sistema de Ranking
» Ranking
» Sistema de Ranking
» Criar Ranking Online
» [ Duvida Unity 5.3 ] Sistema de Ranking
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos