Menu de Save/Load no Unity

Eu estou desenvolvendo um jogo com um amigo no Unity e nos últimos dias eu venho trabalhando na parte da interface gráfica, criando principalmente os menus do jogo. A despeito do sistema de GUI do Unity ser bem ruim (falo disso em outra oportunidade), até que deu pra fazer algo bacana. Eu fiz um sistema de troca de telas e adicionei agora os menus que o jogador irá usar para criar um novo jogo ou carregar um jogo salvo.

O vídeo no início do post mostra o menu em uso e ele basicamente funciona assim: ao iniciar o jogo pela primeira vez, a opção de carregar está inativa e só é possível começar um novo jogo. Quando ao menos um jogo salvo for encontrado, esta opção é habilitada. Na tela de novo jogo, se o jogador escolher salvar sobre um save existente, uma mensagem de confirmação é exibida pra garantir que ele não apague o jogo sem querer (esqueci de colocar essa parte no vídeo ¬¬). Enfim, na tela de carregar é possível escolher um dos jogos salvos. Depois disso, o jogo em si é carregado (aqui, ele simplesmente volta pro menu principal).

No jogo estamos usando a serialização de objetos do .Net para salvar os dados no formato XML. Essa parte é bem besta, eu tenho uma classe que guarda os dados a serem salvos e no momento adequado mando ler ou escrever no XML e o .Net faz o resto pra mim.

Pra controlar o nome dos saves, foi mais prático usar o PlayerPrefs do Unity mesmo. Essa classe permite salvar alguns dados diretamente no registro do Windows. Nesse caso, eu uso o PlayerPrefs pra salvar o nome dos saves criados pelo jogador (que, internamente, são simplesmente save1.xml, save2.xml e save3.xml). Depois, ao carregar o jogo, se um desses saves existir, significa que a opção “Continue” deve ser habilitada. No PlayerPrefs também é salvo o nome do save que aparece para o usuário, aquele que aparece no vídeo com a data e hora em que o jogo foi salvo.

Com essa combinação, eu consigo dar ao jogador a escolha de qual jogo carregar e passar para minha classe que gerencia os arquivos o nome do save que ele deve buscar em disco pra iniciar o jogo e também usar quando tiver que salvar novamente.

Ah sim, toda nossa interface funciona também com teclado ou joystick, ao contrário da GUI padrão do Unity. Deu um trabalhinho, especialmente pra manter a compatibilidade com o mouse, mas agora funciona bem. Se eu animar, falo disso num próximo post. Até lá.

Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>