Atualmente existem muitos jogos de celular que usam um relógio independente do jogo estar aberto.
Você manda o jogo fazer uma tarefa que vai terminar daqui 5 horas, você fecha o jogo e vai fazer suas coisas.
Quando volta 5 horas depois o jogo terminou sua atividade.
Mas como o jogo conta esse tempo mesmo você desligando o celular?
E como você poderia criar um relógio na Unity parecido?
É isso que eu irei te explicar no vídeo de hoje.
Relógio na Unity independente do jogo estar aberto
1 – Relógios de servidor
2 – Sistema de relógio na Unity
3 – O princípio
4 – As ferramentas da Unity
5 – Como criar um contador
Relógios de servidor
A grande maioria desses jogos utilizam um sistema de servidor para guardar os dados do usuário.
Todos os jogadores precisam de uma conexão com a internet para pegar esses dados do servidor e conseguir jogar o seu jogo.
O lado bom é que o tempo sempre vai depender do horário do servidor, que nunca muda.
Isso tira a possibilidade do jogador pode mudar a hora do celular ou computador para avançar o tempo no game.
Mas aqui vai o lado ruim dessa história, esse sistema é um pouco complexo de criar.
E ainda pode ser muito caro para quem esta começando.
Mas então como você pode criar esse sistema, mesmo sabendo que o jogador pode trapacear?
Sistema de relógio na Unity
Esse sistema é muito bom para começar, ele é simples e prático.
Não depende de criar servidor e nem nada disso.
E na maioria das vezes o jogador nem vai saber que ele pode mudar o horário do seu dispositivo para trapacear no jogo.
Principalmente se seu jogo for para celular, onde as pessoas não estão acostumadas a isso.
E ainda o jogador não vai se dar ao trabalho de ficar toda hora querendo mudar o horário do dispositivo.
O princípio
Pensa comigo, para você programar algo daqui 10 minutos você pode pegar a hora atual e colocar mais 10 minutos.
Sabendo isso você pode subtrair a hora programada com a atual para saber quanto tempo falta.
Mas me diz, como você faz esse cálculo se a hora programada for 00:05:39 e a hora atual é 23:00:58?
Claro que esse cálculo pode ser feito e na nossa cabeça é bem intuitivo, mas ele é um pouco complexo para ser programado e colocado no jogo.
Para facilitar então nós faremos cálculos em segundos da seguinte forma:
Tempo = segundos + minutos * 60 + hora * 3.600 + DiaDoAno * 86.400
Com isso nós poderemos mudar para qualquer data do ano e o sistema continua funcionando.
As ferramentas da Unity
Agora que nós sabemos achar a hora do dia em segundos a partir do calendário gregoriano, precisamos dessa informação.
E pra isso nós temos uma ferramenta na Unity que se chama System.DateTime.
O System.DateTime nos dá a informação atual de datas e horários do computador.
Assim, para sabermos a hora utilizaremos esse script:
int HoraAtual = System.DateTime.Now.Second + System.DateTime.Now.Minute * 60 + System.DateTime.Now.Hour * 3600 + System.DateTime.Now.DayOfYear * 86400;
Agora se quisermos programar para que algo aconteça precisamos guardar essa informação em algum lugar.
Para isso usaremos o PlayerPrefs, uma ferramenta para salvar dados na Unity.
Temos também um artigo completo que explica sobre ela.
Lembre-se sempre que estamos trabalhando com segundos, para isso converta o tempo em segundos.
Exemplo: programar algo daqui 5 minutos:
5 minutos = 5 * 60 = 300 segundos
PlayerPrefs.SetInt("TempoProgramado", HoraAtual + 300);
Como criar um contador
Agora que nós programamos um horário, precisamos saber quanto tempo falta para esse horário.
Para isso nós precisamos pegar a diferença em segundos e converter para dia:h:min:seg;
int d = PlayerPrefs.GetInt("TempoProgramado") - HoraAtual;
int seg = d; int min = 0; int hora = 0; int dia = 0; while (seg >= 60) { seg = seg - 60; min = min + 1; if (min == 60){ min = 0; hora = hora + 1; } if (min == 60){ min = 0; hora = hora + 1; } if (hora == 24){ hora = 0; dia = dia + 1; } } string TempoDeEspera = dia + ":" + hora + ":" + min + ":" + seg;
Gostou desse artigo? Temos mais em nosso blog: www.crieseusjogos.com.br
Também temos vídeos toda semana em nosso canal do Youtube: Crie seus jogos – Youtube
Baixe gratuitamente: os passos para desenvolver jogos de sucesso
Seja o primeiro a comentar.