SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
[VIDEO] Sistema de Yu-Gi-Oh com SQLite
Simulador de policia [C#] [Jogo em andamento] [Procurando Equipe]
DUVIDA MONETIZAÇÃO DE JOGOS NA PLAY STORE COM ADMOB
Qual a sua opinião sobre modelos de negócio e monetização de jogos?
sistema de dinheiro
[TUTORIAL] Simples Sistema De Noite e Dia
Quanto Devo Cobrar Por Um Pacote De Modelos 3D ?
Ajuste em sistema de pontuação!
Tela de seleção e multiplayer local
Documentação do Unity Offline em Português Existe???
[DÚVIDA] BONECO NÃO PULA NA DIAGONAL ESQUERDA E FRENTE
Não consigo atribuir pontos no admob reward.
não concigo atirar
[YOUTUBE DOIDO?] Wtf?
Voltar versão do projeto.
Spawn Random simultâneo em pontos específicos
a iluminacao de pono nao esta passando para o teto , unity
Jogo não roda no Android 5 Samsung
QUERIA SABER SE POSSO VENDER MODELOS 3D AQUI ????
erro no scripts de dano no player 2D
Não Acho o Erro no Script - é um script para o player se mover
[HELP] Criação de dano e player health utilizando photon game 2d
[____ QUAL A OPINIÃO DE VOCÊS SOBRE O FÓRUM? ____]
Texto por Script
Problema com sprite na unity
inimigo não muda de sdirecao ao encostar em um ponto, unity 3d
"Dúvida" Como fazer o personagem entra dentro do carro e dirigir ?
Erro ao compilar
Função do Botão UI pelo Script
Pacote Com 79 Skybox Grátis
[Projeto em Andamento] Brazil Combat
[DÚVIDA] ANIMAÇÃO DE PULO NO CONTROLADOR QUE TEM BLEND TREE COM MOVIMENTO
[RESOLVIDO] Requisitos de hardware para Post Processing
alguem pode ajudar sobre ID@Xbox
[RESOLVIDO] Rigidbody: Alterar drag dentro do jogo
Inventário de Sobrevivencia
[RESOLVIDO] MOVIMENTO USANDO RIGIDIBODY NÃO POSSUI GRAVIDADE.
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] Usando Delegates em Unity - Sistema de caixa de diálogo!
[DUVIDA] Tiro com botao touch android!!
KIT de Tiro em 3° Pessoa
Inimigo atacar e tirar vida do meu personagem!!
Inserir animação em certos elemento
Como bloquear rotação em um eixo do objeto?
Dica para jogo point and click
[RESOLVIDO] Alguem pode ajudar com o pos processamento screen space reflection
Criar Script para configurar um assets de um character
Dúvida de imagem sobre realidade aumentada
Modelo 3D
Erro ao exportar APK no unity
como fazer a bala dar impulso na direcao da arma unity 3d
Render Texture, Raw Image e camera
CENTRO DE ROTAÇÃO UNITY
PRESSIONAR BOTÃO TOUCH NO ANDROID SERÁ O MESMO QUE PRESSIONAR UMA TECLA DO TECLADO REAL
Erro após reinstalar o Unity!
Erro ao publicar na google play
[____ASSET____] MS Vehicle System (FREE VERSION)
[TUTORIAL] Unity 5.5 - Splash Screen
Como adicionar todos materiais de um Obj em um Array ou Lista?
Som não funciona no IOS
Como eu faço pra poder interagir apenas uma vez com um objeto de luz?
Preciso de ajuda com GetButtonDown with Axis
[TUTORIAL] Sistema de DIA E NOITE completo, com luzes noturnas e SISTEMA DE NUVENS
SOU MODELADOR SE TIVER ALGUEM PRECISANDO AI ME CONTATE
[TUTORIAL] IA Simples Parte 2 (Atirar)
Photon Bootcamp Asset completo
Detectando Colisão da Arma com o Inimigo
Como eu faria pra ter uma animação diferente para cada lado em um jogo de plataforma 2D?
duvida sobre sistema de cheats estilo gta sa
como fazer a luz ficar "important" e "not important" por script?
[TUTORIAL] Sistema de Entregas + GPS!
[TUTORIAL] Desenvolvendo um jogo de quebra-cabeças
[TUTORIAL] Gerando Objetos Proceduralmente
[RESOLVIDO] COMO EXECUTAR AUDIO QUANDO PLAYER MORRE
PopUp bloqueando versões antigas do jogo
[TUTORIAL] Sistema de PORTAS e CHAVES
Movimentação 3D View Blender
Imagem Aparecer como pergunta
Aparecer item comprado
Por que a UI da esse "BUG"?
Zerar os tempos do Cronometro Unity
Ajuda na unity
Girar personagem no próprio eixo usando joystick virtual
Problema com Esqueleto do personagem
[TUTORIAL] Script de Contagem Regressiva
Ajuda com o codigo.
Como acessar uma variável de um script utilizando como parâmetro uma variável nomescript
CRIEI MEU PRIMEIRO JOGO! 1 ANO DE TRABALHO!
MOVIMENTAÇAO DE UM CUBO
Duvida sobre materiais e textura
Super Husky - meu jogo
[RESOLVIDO] Duvida sobre Unity
[Em Desenvolvimento] Battles of Worlds
[RESOLVIDO] Converter string em virgula em float (decimal)
[TUTORIAL] Como usar FREE EASY CRIATURA CONTROLE IA
Duvida em relação processo de geração de receita
Me ajudem por favor
[RESOLVIDO] Posicionar interestial admob quando o personagem morrer
JOGO DE CARRO EM 2D E PRECISO DE AJUDA EM SCRIPT QUE VAI PRA FRENTE E PRA TRAZ
Hoje à(s) 1:44 am
Ontem à(s) 10:52 pm
Ontem à(s) 4:50 pm
Ontem à(s) 4:45 pm
Ontem à(s) 3:01 pm
Ontem à(s) 12:53 pm
Ontem à(s) 12:42 pm
Ter Jun 25, 2019 11:25 pm
Ter Jun 25, 2019 10:31 pm
Ter Jun 25, 2019 10:21 pm
Ter Jun 25, 2019 9:27 pm
Ter Jun 25, 2019 7:48 pm
Ter Jun 25, 2019 6:25 pm
Ter Jun 25, 2019 3:45 pm
Ter Jun 25, 2019 3:00 pm
Ter Jun 25, 2019 2:14 pm
Ter Jun 25, 2019 11:18 am
Ter Jun 25, 2019 2:03 am
Seg Jun 24, 2019 10:14 pm
Seg Jun 24, 2019 9:47 pm
Seg Jun 24, 2019 8:44 pm
Seg Jun 24, 2019 5:46 pm
Seg Jun 24, 2019 5:35 pm
Seg Jun 24, 2019 5:22 pm
Seg Jun 24, 2019 5:21 pm
Seg Jun 24, 2019 5:19 pm
Seg Jun 24, 2019 5:19 pm
Seg Jun 24, 2019 5:17 pm
Seg Jun 24, 2019 1:19 pm
Seg Jun 24, 2019 1:09 pm
Dom Jun 23, 2019 9:36 pm
Dom Jun 23, 2019 7:16 pm
Dom Jun 23, 2019 1:30 pm
Dom Jun 23, 2019 11:21 am
Dom Jun 23, 2019 10:52 am
Sab Jun 22, 2019 9:50 pm
Sab Jun 22, 2019 7:28 pm
Sab Jun 22, 2019 4:56 pm
Sab Jun 22, 2019 4:35 pm
Sab Jun 22, 2019 3:23 pm
Sab Jun 22, 2019 3:20 pm
Sab Jun 22, 2019 1:09 am
Sex Jun 21, 2019 5:51 pm
Sex Jun 21, 2019 1:20 am
Qui Jun 20, 2019 11:58 pm
Qui Jun 20, 2019 11:56 pm
Qui Jun 20, 2019 11:18 pm
Qui Jun 20, 2019 11:17 pm
Qui Jun 20, 2019 11:16 pm
Qui Jun 20, 2019 11:09 pm
Qui Jun 20, 2019 11:00 pm
Qui Jun 20, 2019 10:57 pm
Qui Jun 20, 2019 10:52 pm
Qui Jun 20, 2019 10:50 pm
Qui Jun 20, 2019 10:45 pm
Qui Jun 20, 2019 10:42 pm
Qui Jun 20, 2019 10:34 pm
Qui Jun 20, 2019 10:33 pm
Qui Jun 20, 2019 10:31 pm
Qui Jun 20, 2019 10:20 pm
Qui Jun 20, 2019 10:08 pm
Qui Jun 20, 2019 9:43 pm
Qui Jun 20, 2019 9:40 pm
Qui Jun 20, 2019 2:52 pm
Qua Jun 19, 2019 11:05 pm
Qua Jun 19, 2019 8:02 pm
Qua Jun 19, 2019 3:35 pm
Qua Jun 19, 2019 3:30 pm
Ter Jun 18, 2019 8:05 pm
Ter Jun 18, 2019 10:06 am
Ter Jun 18, 2019 10:02 am
Ter Jun 18, 2019 9:46 am
Seg Jun 17, 2019 9:42 pm
Seg Jun 17, 2019 8:17 pm
Dom Jun 16, 2019 1:16 pm
Dom Jun 16, 2019 4:03 am
Sab Jun 15, 2019 5:52 pm
Sab Jun 15, 2019 1:43 pm
Sab Jun 15, 2019 12:01 am
Sex Jun 14, 2019 10:47 pm
Sex Jun 14, 2019 9:39 pm
Sex Jun 14, 2019 9:20 pm
Sex Jun 14, 2019 8:56 pm
Sex Jun 14, 2019 8:31 pm
Sex Jun 14, 2019 7:09 pm
Sex Jun 14, 2019 6:26 pm
Sex Jun 14, 2019 8:59 am
Sex Jun 14, 2019 5:25 am
Qui Jun 13, 2019 7:33 pm
Qui Jun 13, 2019 1:02 pm
Qua Jun 12, 2019 8:26 pm
Qua Jun 12, 2019 5:27 pm
Qua Jun 12, 2019 3:54 pm
Qua Jun 12, 2019 2:50 pm
Qua Jun 12, 2019 12:13 pm
Ter Jun 11, 2019 5:26 pm
Ter Jun 11, 2019 3:43 pm
Seg Jun 10, 2019 12:24 pm
Dom Jun 09, 2019 3:19 pm
Giwn
Giwn
artplayer
artplayer
JhoowGamer
JhoowGamer
Magnatah
danielPedra90
xxxlipehxxx
Magnatah
osiasbezerra
slevimk
DESTRUITOR
yurinogueira
SteveRogers
ffabim
Magnatah
lhm
Magnatah
DESTRUITOR
Diguinho
Diguinho
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Caue
MarcosSchultz
NKKF
NKKF
JohnRambo
osiasbezerra
guimaraf
yurinogueira
JonathanDiego
yurinogueira
osiasbezerra
Tegh
Tegh
alisonzinhod
alisonzinhod
osiasbezerra
artplayer
MarcosSchultz
abraao36
diegopds
MarcosSchultz
numb123
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
XxzeroChinxX 999
Matrirxp
artplayer
MarcosSchultz
MarcosSchultz
Diguinho
MarceloYBP
JhoowGamer
Diego Felix
Matrirxp
Diego Felix
Diguinho
MarcosSchultz
lesgoy
MayLeone
Magnatah
glauco
Magnatah
Magnatah
Magnatah
Magnatah
Magnatah
artplayer
Tegh
fluminintia
diegopds
ronigleydson
GameLACK
poyser
Dom3000
numb123
Unidade3d5
poyser
JohnRambo
slevimk
Magnatah

[TUTORIAL] Definindo as resoluções suportadas

Ir em baixo

TUTORIAL [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Dom Dez 03, 2017 6:11 pm

Estou desenvolvendo um projeto de corrida, olhando os recursos da engine sobre resoluções, existia um recurso que me mostrava todas as resoluções suportadas do computador, porém apareceram mais de 10, inclusive algumas muito pequenas.
Como o meu menu era inteiramente feito com Inputs.

Então resolvi que deveria suportar pelo menos 3 das mais comuns, assim poderia trabalhar melhor com minha UI.
As resoluções mais comuns.
1366x768
1280x720
1920x1080

Então eu criei um código abaixo dentro de um método que verifica as resoluções suportada e compara com as que quero suportar, me entregando no mínimo 2, o código funciona perfeitamente.
O controle eu faço com um script externo.

Código:
private void ResolucoesDoJogoSuportadas()
    {
        GlobalController.quantidadeDeResolucoesSuportadas = 0;
        Resolution[] resolucoesSuportadas = Screen.resolutions; //Armazena todas as resoluções suportadas pelo computador

        int[,] novasResolucoes = new int[3, 2]; //Resoluções que queremos suportar
        novasResolucoes[0, 0] = 1366;
        novasResolucoes[0, 1] = 768;
        novasResolucoes[1, 0] = 1280;
        novasResolucoes[1, 1] = 720;
        novasResolucoes[2, 0] = 1920;
        novasResolucoes[2, 1] = 1080;

        for (int y = 0; y < resolucoesSuportadas.Length; y++)
        {
            for (int x = 0; x < 3; x++)
            {
                //Comparando as resoluções suportadas e as que desejamos suportar, no final armazenando apenas as que o equipamento suporta
                if (resolucoesSuportadas[y].width == novasResolucoes[x, 0] && resolucoesSuportadas[y].height == novasResolucoes[x, 1])
                {
                    resolusoesAceitas[x, 0] = resolucoesSuportadas[y].width;
                    resolusoesAceitas[x, 1] = resolucoesSuportadas[y].height;
                    GlobalController.quantidadeDeResolucoesSuportadas++;
                }
            }
        }
        print("qtdResoluções" + GlobalController.quantidadeDeResolucoesSuportadas);
        objetosTextos[2].text = "< " + resolusoesAceitas[GlobalController.indexResolucao, 0] + "x" + resolusoesAceitas[GlobalController.indexResolucao, 1] + " >";
    }

O resultado final é este.
[TUTORIAL] Definindo as resoluções suportadas C1UxHwR
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por Flávio em Seg Dez 04, 2017 5:08 pm

oi guimaraf estou desenvolvendo um menu e queria fazer um comando Apply, tipo este q vc fez c um botao para salvar as alterações.

vc pode me mostrar o script que vc fez para gravar e aplicar as alterações que vc fizer?
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 787
REPUTAÇÃO : 21
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por dstaroski em Seg Dez 04, 2017 5:10 pm

Parabéns ai cara! show de bola mesmo!

Abraço!
dstaroski
dstaroski
Instrutor

Masculino PONTOS : 4269
REPUTAÇÃO : 1089
Idade : 30
Áreas de atuação : Desenvolvedor .NET Jr. ,Téc. Hardware e Redes, Programação C#, Asp .NET, HTML, CSS, Unity 3D

Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas Aad8pUi

Ver perfil do usuário http://diegodeoliveira.gamejolt.io/defeattheilluminatis

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Seg Dez 04, 2017 6:30 pm

@Flávio escreveu:oi guimaraf estou desenvolvendo um menu e queria fazer um comando Apply, tipo este q vc fez c um botao para salvar as alterações.

vc pode me mostrar o script que vc fez para gravar e aplicar as alterações que vc fizer?

Sou bem iniciante em Unity e c#, estudo a linguagem e a engine a mais ou menos 1 ano. A forma que fiz pode não ser muito adequada, porém tudo está funcionando como imaginei.

Primeiro eu criei um script com variáveis estáticas e também alguns métodos estáticos. Ele é responsável por guardar informações de index de resoluções, index qualidade gráfica, index fx, index music e tela cheia.

Para salvar eu usei este método dentro do Script GlobalController
Código:
public static string SalvarConfiguraCoesJogo()
    {
        PlayerPrefs.SetFloat("omegaRacersVolume", indexVolumeMusica);
        PlayerPrefs.SetFloat("omegaRacersVolumeEfeitos", indexVolumeFX);
        PlayerPrefs.SetInt("omegaRacersResolucao", indexResolucao);
        PlayerPrefs.SetInt("omegaRacersQualiadeJogo", indexQualidade);
        PlayerPrefs.SetInt("omegaRacerstelaCheiaSave", indexTelaCheia);
        print("Salvo configurações");

        return "";
    }

Como disse, ele apenas vai salvar o index, o print é para ver se está rodando normalmente, costumo fazer isso nos meus códigos.

Para os botões Back e Apply, eu criei uma array de Imagens, privada e serelizada.
Código:
[SerializeField]
private Image[] botoes;

também uma array de cores

Código:
[SerializeField]
private Color[] cores;

Para trocar a cor dos botões, primeiro eu vou no editor e defino 2 cores, depois no código vai ficar assim.

Código:
private void PintarBotoes()
    {
        if (movimentacaoVertical == 0)
        {
            botoes[0].color = movimentacaoHorizontal == 0 ? cores[0] : cores[1];
            botoes[1].color = movimentacaoHorizontal == 0 ? cores[1] : cores[0];
        }
        else
        {
            botoes[0].color = cores[1];
            botoes[1].color = cores[1];
        }
    }

Eu tenho 2 variáveis para fazer a movimentação horizontal e vertical, desta forma eu posso definir qual opção estou e o que quero que faça.

Então basicamente eu desativo o botão, quando clico em aplicar, já dando feedback para o jogador. O código fica assim.

Código:
    private void AplicarConfiguracoes()
    {
        Screen.SetResolution(resolusoesAceitas[GlobalController.indexResolucao, 0], resolusoesAceitas[GlobalController.indexResolucao, 1], GlobalController.telaCheia);
        QualitySettings.SetQualityLevel(GlobalController.indexQualidade);
        Screen.fullScreen = GlobalController.telaCheia;
        print("Aplicado configurações");
        botoes[1].enabled = false;
        GlobalController.podeAplicar = true;
        objetosTextos[3].enabled = false;
        movimentacaoHorizontal = 0;
        PintarBotoes();
    }

O método faz diversas coisas, como fixar resolução, qualidade, tela cheia, no final vai salvar chamando

Finalmente, a chamada do Input.

Código:
if (Input.GetButtonDown("Submit") && movimentacaoVertical == 0)
        {
            if (movimentacaoHorizontal == 0)
            {
                GlobalController.TrocarCena("Menu");
            }
            else
            {
                GlobalController.SalvarConfiguraCoesJogo();
                AplicarConfiguracoes();
            }
        }
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por Flávio em Seg Dez 04, 2017 7:36 pm

ainda não entendo muito esse playerprefs, vou estudar mais.
para que serve esse SerializeField?

sobre sua movimentação vertical não entendi como vc fez isso?

quanto a qualidade high, medium, e tela em fullscreen ou nao, qual o codigo da unity que trata disso?
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 787
REPUTAÇÃO : 21
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por recagonlei em Seg Dez 04, 2017 7:52 pm

Parabéns velho, muito bom... Continue trazendo contribuições assim para cá!!


ainda não entendo muito esse playerprefs, vou estudar mais.
para que serve esse SerializeField?

sobre sua movimentação vertical não entendi como vc fez isso?

quanto a qualidade high, medium, e tela em fullscreen ou nao, qual o codigo da unity que trata disso?

O SerializeField, permite que variáveis private sejam serializadas e editáveis no inspector.

Todas configurações de qualidade, podem ser acessadas por essa classe:

https://docs.unity3d.com/ScriptReference/QualitySettings.html


Última edição por recagonlei em Seg Dez 04, 2017 9:03 pm, editado 1 vez(es)
recagonlei
recagonlei
MembroAvançado

Masculino PONTOS : 1655
REPUTAÇÃO : 180
Idade : 99
Áreas de atuação :
~Programação (C#, HTML, CSS3)
~Spriter
~Modelagem
~Produtor de rap/hip hop e eletrônico
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://stwodio.ga

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por Flávio em Seg Dez 04, 2017 8:05 pm

valeu recagonlei

não sou muito avançado em c# e conforme eu for tendo duvida vou postando aqui!
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 787
REPUTAÇÃO : 21
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Seg Dez 04, 2017 8:08 pm

@recagonlei escreveu:Parabéns velho, muito bom... Continue trazendo contribuições assim para cá!!


Opa, vlw
Acredito que possa ajudar muita gente este código.
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Seg Dez 04, 2017 8:12 pm

@Flávio escreveu:ainda não entendo muito esse playerprefs, vou estudar mais.
para que serve esse SerializeField?

sobre sua movimentação vertical não entendi como vc fez isso?

quanto a qualidade high, medium, e tela em fullscreen ou nao, qual o codigo da unity que trata disso?

Sobre a movimentação dentro do menu, ela é feita toda via código, no meu caso são literalmente as variáveis as responsáveis pela movimentação, o que faço no final é só verificar os valores da variável e rodar os métodos que preciso.

Código:
if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            if (movimentacaoVertical < 5)
            {
                movimentacaoVertical ++;
                movimentacaoHorizontal = 0;
                PintarBotoes();
            }
        }

        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            if (movimentacaoVertical > 0)
            {
                movimentacaoVertical --;
                movimentacaoHorizontal = 0;
                PintarBotoes();
            }
        }

Sobre o PlayPrefs, ele serve para salvar informações do jogo, veja na documentação oficial. 
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

Como atualmente no projeto tenho poucas informações para serem salvas, eu estou usando este método, futuramente vou utilizar a criação de um arquivo no disco, tenho até pronto um script para isso, porém o método acima é mais fácil, pois não preciso trabalhar com conversões.
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por Flávio em Seg Dez 04, 2017 8:20 pm

Legal, vou treinar esses codigos! lá na unity tem muita coisa, tem que ir pesquisando e testando p ver como funciona! ainda tenho muito a aprender kkkkk
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 787
REPUTAÇÃO : 21
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Seg Dez 04, 2017 8:28 pm

@Flávio escreveu:Legal, vou treinar esses codigos! lá na unity tem muita coisa, tem que ir pesquisando e testando p ver como funciona! ainda tenho muito a aprender kkkkk

faz parte, bora estudar
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por Flávio em Ter Dez 05, 2017 1:33 am

vou pegar esse gancho sobre menus para saber o seguinte:
estou tentando criar aqui um menu com duas opçoes por enquanto só p aprendizado: START e CONFIG

START para começar o jogo.
para a opção CONFIG eu fiz outro painel, que fica desativado no inicio, aí selecionando CONFIG e pressioandno ENTER eu desativo o primeiro painel e ativo esse CONFIG para as configurações.
pesquisando pela internet consegui fazer essa transição de menus e até agora deu certo, ficou bacaninha!
e dentro do painel CONFIG eu ainda quero ter acesso a outro painel CONTROL.

mas eu queria saber de vcs o seguinte: o que fica melhor, criar toda essa mudança de menus e submenus dentro de uma unica cena, o que na minha opiniao deixaria o script mais complexo, ou criar uma cena diferente para cada menu?
por exemplo, estou na cena menu principal e seleciono a opção CONFIG do 1º painel, dou enter e carrega a cena para o submenu CONFIG. e dentro do CONFIG teclo enter na opção CONTROL e me leva para a cena do painel de configuração de controles.

o que vcs acham melhor?
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 787
REPUTAÇÃO : 21
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Ter Dez 05, 2017 7:21 am

@Flávio escreveu:vou pegar esse gancho sobre menus para saber o seguinte:
estou tentando criar aqui um menu com duas opçoes por enquanto só p aprendizado: START e CONFIG

START para começar o jogo.
para a opção CONFIG eu fiz outro painel, que fica desativado no inicio, aí selecionando CONFIG e pressioandno ENTER eu desativo o primeiro painel e ativo esse CONFIG para as configurações.
pesquisando pela internet consegui fazer essa transição de menus e até agora deu certo, ficou bacaninha!
e dentro do painel CONFIG eu ainda quero ter acesso a outro painel CONTROL.

mas eu queria saber de vcs o seguinte: o que fica melhor, criar toda essa mudança de menus e submenus dentro de uma unica cena, o que na minha opiniao deixaria o script mais complexo, ou criar uma cena diferente para cada menu?
por exemplo, estou na cena menu principal e seleciono a opção CONFIG do 1º painel, dou enter e carrega a cena para o submenu CONFIG. e dentro do CONFIG teclo enter na opção CONTROL e me leva para a cena do painel de configuração de controles.

o que vcs acham melhor?

Eu fiz a primeira versão desta forma, porém o script acabou ficando muito grande e de certa forma inchado, vale lembrar que eu fiz já pensando no gamepad.

Depois resolvi refazer, separando tudo entre cenas, além de ficar mais limpo e fácil de edição.
A minha sequencia atualmente é o seguinte.
Nome das cenas
Menu
MenuOptions
CharacterSelect
CircuitSelect
Corrida

Caso eu quera modificar qualquer coisa, vou direto na cena e modifico ela, muito melhor para trabalhar.
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por recagonlei em Ter Dez 05, 2017 10:16 am

Eu já acho uma maneira mais otimizado, se criar o menu todo em uma cena, e cada Ui um script diferente... Por exemplo: Eu faço o Menu principal, o de configuração e o menu de controles... Para cada um, eu crio um script, que tenha variáveis de acordo com seus menus e um content seria uma variável do tipo Transform ou GameObjeto que é o pai de cada menu e em um script geral que gerencia e guarda algumas infos dos menus e qual menu eu estou. Quando eu quero ir para tal menu, eu apenas irei desativar meu menu(que eu seto na hora que eu entro em certo menu no meu manager), no método que eu chamo para abrir o outro, ele abre e seta no manager qual content menu eu quero ir e atualiza a variável, depois conforme eu for voltando ou avançando nos menus, ele vai sempre desativando o menu atual e assim sucessivamente! Ainda mais se for menus mais simples, transições entre cenas ficará muito mal otimizado, mesmo que seja uma cena bem leve e simples, o intuito de cenas da unity é para separar as partes do proj e o menu, é basicamente um só, por isso deve ser feita de uma maneira mais otimizada... Mas, os projetos são de vocês, apenas dei uma dica! Abraços, qualquer coisa deem um toque!
recagonlei
recagonlei
MembroAvançado

Masculino PONTOS : 1655
REPUTAÇÃO : 180
Idade : 99
Áreas de atuação :
~Programação (C#, HTML, CSS3)
~Spriter
~Modelagem
~Produtor de rap/hip hop e eletrônico
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://stwodio.ga

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Ter Dez 05, 2017 10:48 am

@recagonlei escreveu:Eu já acho uma maneira mais otimizado, se criar o menu todo em uma cena, e cada Ui um script diferente... Por exemplo: Eu faço o Menu principal, o de configuração e o menu de controles... Para cada um, eu crio um script, que tenha variáveis de acordo com seus menus e um content seria uma variável do tipo Transform ou GameObjeto que é o pai de cada menu e em um script geral que gerencia e guarda algumas infos dos menus e qual menu eu estou. Quando eu quero ir para tal menu, eu apenas irei desativar meu menu(que eu seto na hora que eu entro em certo menu no meu manager), no método que eu chamo para abrir o outro, ele abre e seta no manager qual content menu eu quero ir e atualiza a variável, depois conforme eu for voltando ou avançando nos menus, ele vai sempre desativando o menu atual e assim sucessivamente! Ainda mais se for menus mais simples, transições entre cenas ficará muito mal otimizado, mesmo que seja uma cena bem leve e simples, o intuito de cenas da unity é para separar as partes do proj e o menu, é basicamente um só, por isso deve ser feita de uma maneira mais otimizada... Mas, os projetos são de vocês, apenas dei uma dica! Abraços, qualquer coisa deem um toque!

Com certeza é mais otimizado. 
Como disse acima, eu fiz desta forma, depois senti que estava muito ruim para fazer modificações, ainda mais que o projeto está com pouco tempo de desenvolvimento, muita coisa pode mudar, opções podem ser criadas.

Se eu tiver por exemplo um menu com todas as opções fixas, é bem recomendável trabalhar ativando e desativando objetos. Como pretendo acrescentar diversas opções de personalização, trabalhar com apenas 1 cena, é um verdadeiro inferno, mesmo organizando bem o código, ele fica longo.
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por Flávio em Qua Dez 06, 2017 5:45 pm

guimaraf, vc pode postar seu script completo sobre esse mudança de opções no menu, com os comandos aplicar e tudo mais? para eu ir estudando os codigos...
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 787
REPUTAÇÃO : 21
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por recagonlei em Qua Dez 06, 2017 6:44 pm

@guimaraf escreveu:
@recagonlei escreveu:Eu já acho uma maneira mais otimizado, se criar o menu todo em uma cena, e cada Ui um script diferente... Por exemplo: Eu faço o Menu principal, o de configuração e o menu de controles... Para cada um, eu crio um script, que tenha variáveis de acordo com seus menus e um content seria uma variável do tipo Transform ou GameObjeto que é o pai de cada menu e em um script geral que gerencia e guarda algumas infos dos menus e qual menu eu estou. Quando eu quero ir para tal menu, eu apenas irei desativar meu menu(que eu seto na hora que eu entro em certo menu no meu manager), no método que eu chamo para abrir o outro, ele abre e seta no manager qual content menu eu quero ir e atualiza a variável, depois conforme eu for voltando ou avançando nos menus, ele vai sempre desativando o menu atual e assim sucessivamente! Ainda mais se for menus mais simples, transições entre cenas ficará muito mal otimizado, mesmo que seja uma cena bem leve e simples, o intuito de cenas da unity é para separar as partes do proj e o menu, é basicamente um só, por isso deve ser feita de uma maneira mais otimizada... Mas, os projetos são de vocês, apenas dei uma dica! Abraços, qualquer coisa deem um toque!

Com certeza é mais otimizado. 
Como disse acima, eu fiz desta forma, depois senti que estava muito ruim para fazer modificações, ainda mais que o projeto está com pouco tempo de desenvolvimento, muita coisa pode mudar, opções podem ser criadas.

Se eu tiver por exemplo um menu com todas as opções fixas, é bem recomendável trabalhar ativando e desativando objetos. Como pretendo acrescentar diversas opções de personalização, trabalhar com apenas 1 cena, é um verdadeiro inferno, mesmo organizando bem o código, ele fica longo.

Cara, comigo não enfrento problema nenhum... Eu criei um singleton(Canvas Manager) para administrar o sistema de Ui e cada tipo de sistema criado(os que necessitam) possuem um script que comando seu Ui, ou seja, existe um Game Manager e o Canvas Manager, e cada tipo de sistema que precise de um Ui eu acesso pelo Canvas Manager ou direto e assim tenho um controle de cada Ui e vou adicionando/modificando/deletando o que for necessário a partir do script desejado. Eu consegui assim ser bem mais organizado, fluido e além do mais, otimizado!
recagonlei
recagonlei
MembroAvançado

Masculino PONTOS : 1655
REPUTAÇÃO : 180
Idade : 99
Áreas de atuação :
~Programação (C#, HTML, CSS3)
~Spriter
~Modelagem
~Produtor de rap/hip hop e eletrônico
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://stwodio.ga

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Qua Dez 06, 2017 7:49 pm

@recagonlei escreveu:

Cara, comigo não enfrento problema nenhum... Eu criei um singleton(Canvas Manager) para administrar o sistema de Ui e cada tipo de sistema criado(os que necessitam) possuem um script que comando seu Ui, ou seja, existe um Game Manager e o Canvas Manager, e cada tipo de sistema que precise de um Ui eu acesso pelo Canvas Manager ou direto e assim tenho um controle de cada Ui e vou adicionando/modificando/deletando o que for necessário a partir do script desejado. Eu consegui assim ser bem mais organizado, fluido e além do mais, otimizado!

Eu fiz semelhante.
Vale lembrar que o menu que construí, é com inputs de teclado e gamepad.
Eu fiz um fake singeton, kkkkk

Sou novato na engine e c#.
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Qua Dez 06, 2017 11:37 pm

@Flávio escreveu:guimaraf, vc pode postar seu script completo sobre esse mudança de opções no menu, com os comandos aplicar e tudo mais? para eu ir estudando os codigos...

Foram diversos pedaços e chamo outro script.

Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Collections;
using GameJolt.UI.Objects;

public class MenuOpcoes : MonoBehaviour
{
#region Variaveis do projeto
    public Slider volumeGeralDoJogo, volumeEfeirosSonoros;
    public Image[] BotoesMenuPrincipalImage;
    public Color[] CoresBotoes;
    public Text versaoJogo, contadorFPSNaTela, txtGameJoltLOgin;
    [Space(20)]
    public GameObject grupoBotoesMenu, grupoBotoesOpcoes;
    public Material mCam;
    private Camera gameCam;
    //Variáveis para o save das configurações do menu
    [SerializeField]
    private int indexResolucoes = 0, indexQualidade = 0, quantidadeResolucoes = 0, indexVolumeDoJogo = 5, indexVolumeEfeiros = 5;
    private int telaCheiaSave = 0;

    [SerializeField]
    private bool buildGameJolt, buildSteam;
    public float worldRecordTempo = 0f;
    [SerializeField]
    private string primeiroColocado;
    private int[,] resolusoesAceitas = new int[5,2];

    //Navegando no menu principal
    [SerializeField]
    private int idMenuInput;
    [SerializeField]
    private bool hasPressedDirectionalPad = false , hasPressedDirectionalPadHorizontal = false , hasPressedSubmitPad = false;//Detectar se foi pressionado apenas 1 vez
    [SerializeField]
    private bool opcaoEscolhidaBool = false;//Para que a opção seja executada apenas 1 vez
    [SerializeField]
    private bool menuOpcoesPrincipalAtivo = true, gameJoltChamarLogin = false, painelGaeJolt = false;
    [SerializeField]
    private bool ativaTelaCheia = false;
    [SerializeField]
    private float direcionalFloatY = 0f, direcionalFloatX = 0f, submited = 0f;
    public Image seletorMenuOptions;

    //Navegando pelas opções do menu
    [SerializeField]
    private int idMenuOpcoesConfig = 0, seletorVoltarAplicar = 0;
    public Text qualidade, resolucao, telaCheia;

    #endregion Variaveis do projeto
    private void Awake()
    {
        gameCam = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
        TrocarCorBotoes();
        CamNewTexture();
        VerificaSaveMenuOpcoes();
        primeiroColocado = "";
        hasPressedSubmitPad = false;
    }

    void Start()
    {
        versaoJogo.text = "Alpha version: " + Application.version + " - Game in development";
        grupoBotoesOpcoes.SetActive(!menuOpcoesPrincipalAtivo);
        grupoBotoesMenu.SetActive(menuOpcoesPrincipalAtivo);

        /* Desativado para poder trabalhar no meu sem resisições do GJ
        if (GameJoltLogin.VerificarConexaoInternet())
        {
            StartCoroutine(ColetandoPrimeiroDoRanking()); //Vai buscar os dados apenas do primeiro
        }
        */
    }

    //Fazendo render das texturas para câmera
    private void CamNewTexture()
    {
        if (gameCam.targetTexture != null)
        {
            gameCam.targetTexture.Release();
        }
        RenderTexture newTexture;
        newTexture = new RenderTexture(Screen.width, Screen.height, 24);
        gameCam.targetTexture = newTexture;
        gameCam.targetTexture.filterMode = FilterMode.Point;
        mCam.mainTexture = gameCam.targetTexture;
    }

    IEnumerator ColetandoPrimeiroDoRanking()
    {
        string temp = "";

        GameJoltLogin.CarregarRanking(0);
        yield return new WaitForSeconds(4); //Vai aguardar 5 segundos antes de coletar os dados do primeiro colocado
        primeiroColocado = GameJoltLogin.RetornaPrimeirColocado();
        print(primeiroColocado);
        yield return new WaitForSeconds(1);
        temp = GameJoltLogin.TratamentoPrimeiroColocado(primeiroColocado);
        print(temp + "Impresso na função local");
    }

    private void Update()
    {
        float avgFrameRate;
        avgFrameRate = Time.frameCount / Time.time;
        contadorFPSNaTela.text = "FPS " + (int)avgFrameRate;

        txtGameJoltLOgin.text = !GameJoltLogin.isSignedIn ? "GameJolt Login" : "GameJolt Logout";
        if (GameJoltLogin.isSignedIn && gameJoltChamarLogin && opcaoEscolhidaBool)
        {
            CancelarPainelGameJolt();
        }

        //Navegando pelo menu com Inputs
        //Preferi separar os controles, assim posso ter o controle do que exatamente vai funcionar no jogo e como vai funcionar
        #region Teclado controle navegação

        if (Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.DownArrow))
        {
            MovimentaMenuBaixo();
        }

        if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.UpArrow))
        {
            MovimentaMenuAcima();
        }

        //Movimentação na horizontal
        if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow))
        {
            if (!menuOpcoesPrincipalAtivo)
            {
                MovimentaParaEsquerdaOpcoes();
            }
        }

        if (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow))
        {
            if (!menuOpcoesPrincipalAtivo)
            {
                MovimentaParaDireitaOpcoes();
            }
        }
        #endregion Teclado controle navegação

        #region Controles por Inputs movimentação
        //Seletor na vertical
        if (Input.GetAxisRaw("DPadY") != 0 && hasPressedDirectionalPad == false)
        {
            direcionalFloatY = (int)Mathf.Sign(Input.GetAxis("DPadY")) * 1;
            hasPressedDirectionalPad = true;

            if (hasPressedDirectionalPad == true && direcionalFloatY > 0.5f)
            {
                MovimentaMenuBaixo();
            }

            if (hasPressedDirectionalPad == true && direcionalFloatY < 0.5f)
            {
                MovimentaMenuAcima();
            }
        }
           
        //Cancelando o input do gamepad vertical
        if (Input.GetAxis("DPadY") == 0)
        {
            hasPressedDirectionalPad = false;
        }

        //Seletor na Horizontal
        if (Input.GetAxisRaw("DPadX") != 0 && hasPressedDirectionalPadHorizontal == false)
        {
            direcionalFloatX = (int)Mathf.Sign(Input.GetAxis("DPadX")) * 1;
            hasPressedDirectionalPadHorizontal = true;

            if (hasPressedDirectionalPadHorizontal == true && direcionalFloatX > 0.5f)
            {
                if (!menuOpcoesPrincipalAtivo)
                {
                    MovimentaParaDireitaOpcoes();
                }
            }

            if (hasPressedDirectionalPadHorizontal == true && direcionalFloatX < 0.5f)
            {
                if (!menuOpcoesPrincipalAtivo)
                {
                    MovimentaParaEsquerdaOpcoes();
                }
            }
        }

        if (Input.GetKeyDown(KeyCode.Escape)&& gameJoltChamarLogin && opcaoEscolhidaBool)
        {
            CancelarPainelGameJolt();
        }

        //Cancelando o input do gamepad horizontal
        if (Input.GetAxis("DPadX") == 0)
        {
            hasPressedDirectionalPadHorizontal = false;
        }
        /*
        if (Input.GetKeyDown(KeyCode.Return) && !opcaoEscolhidaBool)
        {
            ConfirmarMenus();
        }
        */
       
        //Confirmar
        if (Input.GetAxisRaw("Submit") != 0 && hasPressedSubmitPad == false && !opcaoEscolhidaBool)
        {
            //opcaoEscolhidaBool = true;
            submited = (int)Mathf.Sign(Input.GetAxis("Submit")) * 1;
            hasPressedSubmitPad = true;
            print("Executa somente 1 vez");

            if (hasPressedSubmitPad == true && submited == 1)
            {
                ConfirmarMenus();
            }
        }

        //Cancelando o input do gamepad vertical
        if (Input.GetAxis("Submit") == 0)
        {
            hasPressedSubmitPad = false;
        }
        #endregion Controles por Inputs movimentação
    }

    //Função dos botões principais do menu
    private void AcaoBotaoMenuOmega(string tipoDeCarregamento)
    {
        if (tipoDeCarregamento == "trial")
        {
            //pista 2
            //TimeTrial_Track2

            print("Troca de cena");
            http://SceneManager.LoadScene("MenuCharSelect", LoadSceneMode.Single); //Carregamendo de forma asyncrona
            GlobalController.TrocarCena("MenuCharSelect");
        }

        if (tipoDeCarregamento == "gameJolt")
        {
            if (GameJoltLogin.VerificarConexaoInternet())
            {
                if (!GameJoltLogin.isSignedIn)
                {
                    painelGaeJolt = true;
                    GameJoltLogin.LogarGameJolt(); //Logando
                }
                else
                {
                    CancelarPainelGameJolt(); //Deslogando
                    GameJoltLogin.DeslogarGameJolt();
                    SceneManager.LoadScene("MenuOmega", LoadSceneMode.Single); //Resolvi carregar a cena, resolveu o problema de deslogar e não conseguir mais se mexer na tela
                }
            }
        }

        if (tipoDeCarregamento == "options")
        {
            print("Opções");
            menuOpcoesPrincipalAtivo = false;
            grupoBotoesMenu.SetActive(false);
            grupoBotoesOpcoes.SetActive(true);
            opcaoEscolhidaBool = false;
            TrocarCorBotoes();
        }

        if (tipoDeCarregamento == "exit")
        {
            print("Sair do jogo");
            Application.Quit();
        }
    }

    private void AcaoBotoesOptions(string opcaoAcao)
    {
        if(opcaoAcao == "voltar")
        {
            grupoBotoesOpcoes.SetActive(false);
            grupoBotoesMenu.SetActive(true);
        }
    }

    private void FullScreenGame()
    {
        Screen.fullScreen = telaCheiaSave == 0 ? false : true;
    }
 
    private void AplicarConfiguracoesESalvar()
    {
        print("Salvando configuração rodando");
        PlayerPrefs.SetFloat("volumeDoJogo", indexVolumeDoJogo);
        PlayerPrefs.SetFloat("volumeDosEfeitos", indexVolumeEfeiros);
        PlayerPrefs.SetInt("resolucao", indexResolucoes);
        PlayerPrefs.SetInt("qualiadeJogo", indexQualidade);
        PlayerPrefs.SetInt("telaCheiaSave", telaCheiaSave);

        Screen.SetResolution(resolusoesAceitas[indexResolucoes, 0], resolusoesAceitas[indexResolucoes, 1], ativaTelaCheia); //mudar aqui também, no final passar um bool
        QualitySettings.SetQualityLevel(indexQualidade);
        Screen.fullScreen = ativaTelaCheia;
        CamNewTexture();
    }

    private void VerificaSaveMenuOpcoes()
    {
        //Resolução do jogo
        if (PlayerPrefs.HasKey("resolucao"))
        {
            indexResolucoes = PlayerPrefs.GetInt("resolucao");
            http://resolucoesDoJogo.value = indexResolucoes;
        }

        else
        {
            PlayerPrefs.SetInt("resolucao", 0);
        }

        //QualidadeJoJogo do jogo
        if (PlayerPrefs.HasKey("qualiadeJogo"))
        {
            indexQualidade = PlayerPrefs.GetInt("qualiadeJogo");
        }
        else
        {
            PlayerPrefs.SetInt("qualiadeJogo", 0);
        }

        // Tela cheia
        if (PlayerPrefs.HasKey("telaCheiaSave"))
        {
            telaCheiaSave = PlayerPrefs.GetInt("telaCheiaSave");
            FullScreenGame();
        }
        else
        {
            PlayerPrefs.SetInt("telaCheiaSave", 0);
        }
        //Volume do jogo
        if (PlayerPrefs.HasKey("volumeDoJogo"))
        {
            volumeGeralDoJogo.value = PlayerPrefs.GetFloat("volumeDoJogo");
            indexVolumeDoJogo = (int)volumeGeralDoJogo.value;

        }
        else
        {
            PlayerPrefs.SetFloat("volumeDoJogo", volumeGeralDoJogo.value = 5f);
            indexVolumeDoJogo = (int)volumeGeralDoJogo.value;
        }
        //Volume dos efeitos
        if (PlayerPrefs.HasKey("volumeEfeitos"))
        {
            volumeEfeirosSonoros.value = PlayerPrefs.GetFloat("volumeEfeitos");
            indexVolumeEfeiros = (int)volumeEfeirosSonoros.value;

        }
        else
        {
            PlayerPrefs.SetFloat("volumeEfeitos", volumeEfeirosSonoros.value = 5f);
            indexVolumeEfeiros = (int)volumeEfeirosSonoros.value;
        }
    }

    //Vai trocar as cores da tela principal
    private void TrocarCorBotoes()
    {
        Color cor1 = new Color();
        Color cor2 = new Color();

        cor1 = CoresBotoes[0];
        cor2 = CoresBotoes[1];

        switch (idMenuInput)
        {
            case 0:
                BotoesMenuPrincipalImage[0].color = cor1;
                BotoesMenuPrincipalImage[1].color = cor2;
                BotoesMenuPrincipalImage[2].color = cor2;
                BotoesMenuPrincipalImage[3].color = cor2;
                break;
            case 1:
                BotoesMenuPrincipalImage[0].color = cor2;
                BotoesMenuPrincipalImage[1].color = cor1;
                BotoesMenuPrincipalImage[2].color = cor2;
                BotoesMenuPrincipalImage[3].color = cor2;
                break;
            case 2:
                BotoesMenuPrincipalImage[0].color = cor2;
                BotoesMenuPrincipalImage[1].color = cor2;
                BotoesMenuPrincipalImage[2].color = cor1;
                BotoesMenuPrincipalImage[3].color = cor2;
                break;
            case 3:
                BotoesMenuPrincipalImage[0].color = cor2;
                BotoesMenuPrincipalImage[1].color = cor2;
                BotoesMenuPrincipalImage[2].color = cor2;
                BotoesMenuPrincipalImage[3].color = cor1;
                break;
        }
    }
   
    //Troca as cores dos botões Voltar e Aplicar
    private void TrocarCoresMenuOpvoes()
    {
        Color cor1 = new Color();
        Color cor2 = new Color();

        cor1 = CoresBotoes[0];
        cor2 = CoresBotoes[1];

        print("pintando o menu");
        switch (seletorVoltarAplicar)
        {
            case 0:
                BotoesMenuPrincipalImage[4].color = cor1;
                BotoesMenuPrincipalImage[5].color = cor2;
                break;
            case 1:
                BotoesMenuPrincipalImage[4].color = cor2;
                BotoesMenuPrincipalImage[5].color = cor1;
                break;
            case 2:
                BotoesMenuPrincipalImage[4].color = cor2;
                BotoesMenuPrincipalImage[5].color = cor2;
                break;
        }
    }
   
    private void MudarSeletorOptions(int posicao)
    {
        int[,] posicoesSeletorOptions = new int[6,2];

        posicoesSeletorOptions[0, 0] = -36;
        posicoesSeletorOptions[0, 1] = -635;
        posicoesSeletorOptions[1, 0] = -23;
        posicoesSeletorOptions[1, 1] = -279;
        posicoesSeletorOptions[2, 0] = 8;
        posicoesSeletorOptions[2, 1] = -163;
        posicoesSeletorOptions[3, 0] = 30;
        posicoesSeletorOptions[3, 1] = -39;
        posicoesSeletorOptions[4, 0] = 45;
        posicoesSeletorOptions[4, 1] = 97;
        posicoesSeletorOptions[5, 0] = 78;
        posicoesSeletorOptions[5, 1] = 249;

        seletorMenuOptions.rectTransform.localPosition = new Vector3(posicoesSeletorOptions[posicao, 0], posicoesSeletorOptions[posicao, 1], 0);
    }
   
    private void QualidadeJoJogo()
    {
        string[] nomes = QualitySettings.names;

        qualidade.text = "< " + nomes[indexQualidade] + " >";
    }

    private void ResolucoesDoJogoSuportadas()
    {
        int qtdResolucoes = 0;

        Resolution[] resolucoesSuportadas = Screen.resolutions; //Armazena todas as resoluções suportadas pelo computador

        int[,] novasResolucoes = new int[3,2];
        novasResolucoes[0, 0] = 1366;
        novasResolucoes[0, 1] = 768;
        novasResolucoes[1, 0] = 1280;
        novasResolucoes[1, 1] = 720;
        novasResolucoes[2, 0] = 1920;
        novasResolucoes[2, 1] = 1080;

        for (int y = 0; y < resolucoesSuportadas.Length; y++)
        {
            for(int x = 0; x < 3; x++)
            {
                if (resolucoesSuportadas[y].width == novasResolucoes[x, 0] && resolucoesSuportadas[y].height == novasResolucoes[x, 1])
                {
                    resolusoesAceitas[x, 0] = resolucoesSuportadas[y].width;
                    resolusoesAceitas[x, 1] = resolucoesSuportadas[y].height;
                    qtdResolucoes++;
                }
            }
        }

        quantidadeResolucoes = qtdResolucoes;

        resolucao.text = "< " + resolusoesAceitas[indexResolucoes, 0] + "x" + resolusoesAceitas[indexResolucoes, 1] + " >";
    }

    private void VolumeFXJogo()
    {
        volumeEfeirosSonoros.value = indexVolumeEfeiros;
    }

    private void VolumeMusicaMudar()
    {
        volumeGeralDoJogo.value = indexVolumeDoJogo;
    }

    private void MovimentaParaEsquerdaOpcoes()
    {
        switch (idMenuOpcoesConfig)
        {
            case 0:
                seletorVoltarAplicar = 0;
                TrocarCoresMenuOpvoes();
                break;
            case 1:
                ativaTelaCheia = false;
                telaCheia.text = "< Off >";
                break;
            case 2:
                if (indexQualidade > 0)
                {
                    indexQualidade--;
                    QualidadeJoJogo();
                }
                print("Qualidade");
                break;
            case 3:
                if (indexResolucoes > 0)
                {
                    indexResolucoes--;
                    ResolucoesDoJogoSuportadas();
                }
                print("Resolução");
                break;
            case 4:
                if (indexVolumeEfeiros > 1)
                {
                    indexVolumeEfeiros--;
                    VolumeFXJogo();
                }
                print("FX");
                break;
            case 5:
                if (indexVolumeDoJogo > 1)
                {
                    indexVolumeDoJogo--;
                    VolumeMusicaMudar();
                }
                print("Music");
                break;
        }
    }

    private void MovimentaParaDireitaOpcoes()
    {
        switch (idMenuOpcoesConfig)
        {
            case 0:
                seletorVoltarAplicar = 1;
                TrocarCoresMenuOpvoes();
                break;
            case 1:
                ativaTelaCheia = true;
                telaCheia.text = "< On >";
                break;
            case 2:
                if (indexQualidade < 5)
                {
                    indexQualidade++;
                    QualidadeJoJogo();
                }
                print("Qualidade");
                break;
            case 3:
                if (indexResolucoes < quantidadeResolucoes - 1)
                {
                    indexResolucoes++;
                    ResolucoesDoJogoSuportadas();
                }
                print("Resolução");
                break;
            case 4:
                if (indexVolumeEfeiros < 10)
                {
                    indexVolumeEfeiros++;
                    VolumeFXJogo();
                }
                print("FX");
                break;
            case 5:
                if (indexVolumeDoJogo < 10)
                {
                    indexVolumeDoJogo++;
                    VolumeMusicaMudar();
                }
                print("Music");
                break;
        }
    }

    //NOvos métodos
    private void ConfirmarMenus()
    {
        if (menuOpcoesPrincipalAtivo)
        {
            if (idMenuInput == 0)
            {
                opcaoEscolhidaBool = true;
                AcaoBotaoMenuOmega("trial");
            }

            if (idMenuInput == 1)
            {
                opcaoEscolhidaBool = true;
                AcaoBotaoMenuOmega("gameJolt");
                gameJoltChamarLogin = true;
            }

            if (idMenuInput == 2)
            {
                VolumeMusicaMudar();
                VolumeFXJogo();
                ResolucoesDoJogoSuportadas();
                QualidadeJoJogo();

                opcaoEscolhidaBool = true;
                TrocarCorBotoes();
                AcaoBotaoMenuOmega("options");
                MudarSeletorOptions(0);
                TrocarCoresMenuOpvoes();
            }

            if (idMenuInput == 3)
            {
                opcaoEscolhidaBool = true;
                AcaoBotaoMenuOmega("exit");
            }
        }
        else
        {
            if (idMenuOpcoesConfig == 0)
            {
                if (seletorVoltarAplicar == 0)
                {
                    //StartCoroutine(AguardarTempo());
                    grupoBotoesMenu.SetActive(true);
                    grupoBotoesOpcoes.SetActive(false);
                    menuOpcoesPrincipalAtivo = true;
                    TrocarCoresMenuOpvoes();
                }
                else
                {
                    //Salvar configurações
                    AplicarConfiguracoesESalvar();
                }
            }
        }
    }

    private void MovimentaMenuAcima()
    {
        if (!opcaoEscolhidaBool)
        {
            if (menuOpcoesPrincipalAtivo && !gameJoltChamarLogin && !painelGaeJolt)
            {
                if (idMenuInput > 0)
                {
                    idMenuInput -= 1;
                    TrocarCorBotoes();
                }
            }
            else
            {
                if (idMenuOpcoesConfig < 5)
                {
                    idMenuOpcoesConfig++;
                    MudarSeletorOptions(idMenuOpcoesConfig);
                    seletorVoltarAplicar = 2;
                    TrocarCoresMenuOpvoes();
                }
                if (idMenuOpcoesConfig == 0)
                {
                    seletorVoltarAplicar = 0;
                    TrocarCoresMenuOpvoes();
                }
            }
        }
    }

    private void MovimentaMenuBaixo()
    {
        if (!opcaoEscolhidaBool && !gameJoltChamarLogin && !painelGaeJolt)
        {
            if (menuOpcoesPrincipalAtivo)
            {
                if (idMenuInput < 3)
                {
                    idMenuInput += 1;
                    TrocarCorBotoes();
                }
            }
            else
            {
                if (idMenuOpcoesConfig > 0)
                {
                    idMenuOpcoesConfig--;
                    MudarSeletorOptions(idMenuOpcoesConfig);
                    seletorVoltarAplicar = 2;
                    TrocarCoresMenuOpvoes();
                }

                if (idMenuOpcoesConfig == 0)
                {
                    seletorVoltarAplicar = 0;
                    TrocarCoresMenuOpvoes();
                }
            }
        }
    }

    private void CancelarPainelGameJolt()
    {
        gameJoltChamarLogin = false;
        opcaoEscolhidaBool = false;
        painelGaeJolt = false;
    }
}


Script para save

Código:
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class GlobalController : MonoBehaviour {

    public GameObject[] datas; //array para armazenar gameobjects iguais

    public static int pistaEscolhida;
    public static int carroEscolhido;
    public static int carroCorEscolhida = 0;
    public float[] tempoRecordePista;
    public static int indexQualidade = 2, indexResolucao = 1, indexTelaCheia;
    public static float indexVolumeMusica = 5, indexVolumeFX = 5;
    public static int quantidadeDeResolucoesSuportadas;
    public static bool telaCheia;
    public static bool podeAplicar;
    public static bool logadoGameJolt, painelGameJolt;
    public static float[] recordePistas = new float[2];

    public static bool corridaComecou, corridaTerminou;

    private void Awake()
    {
        datas = GameObject.FindGameObjectsWithTag("DATAS");
        if (datas.Length >= 2)
        {
            for (int i = 0; i < datas.Length - 1; i++)
            {
                Destroy(datas[i]);
            }
        }
        DontDestroyOnLoad(this); //somente esta linha evita que o objeto seja destruído
    }

    public static void TrocarCena(string nomeDaCena)
    {
        print("Carregado cena " + nomeDaCena);
        SceneManager.LoadScene(nomeDaCena, LoadSceneMode.Single);
    }

    public float TempoDaPista(int numeroDaPista)
    {
        return tempoRecordePista[numeroDaPista]; //Por enquanto não está em uso
    }

    public static string NomeDaPista(int pistaNumero)
    {
        string[] pistasNomes = new string[2]; //Caso precise de mais espaço para nomes

        pistasNomes[0] = "  Track 1 >";
        pistasNomes[1] = "< Track 2  ";

        return pistasNomes[pistaNumero];
    }

    public static int QuantidadeVoltasPorCorrida(int pistaNumero)
    {
        int[] quantidadeVoltasPista = new int[2];

        quantidadeVoltasPista[0] = 5;
        quantidadeVoltasPista[1] = 3;

        return quantidadeVoltasPista[pistaNumero];
    }

    public static string SalvarConfiguraCoesJogo()
    {
        PlayerPrefs.SetFloat("omegaRacersVolume", indexVolumeMusica);
        PlayerPrefs.SetFloat("omegaRacersVolumeEfeitos", indexVolumeFX);
        PlayerPrefs.SetInt("omegaRacersResolucao", indexResolucao);
        PlayerPrefs.SetInt("omegaRacersQualiadeJogo", indexQualidade);
        PlayerPrefs.SetInt("omegaRacerstelaCheiaSave", indexTelaCheia);
        print("Salvo configurações");

        return "";
    }

    public static string LoadRecordes()
    {

        if (PlayerPrefs.HasKey("omegaRacersRecordePista1"))
        {
            recordePistas[0] = PlayerPrefs.GetFloat("omegaRacersRecordePista1");
        }

        else
        {
            PlayerPrefs.SetFloat("omegaRacersRecordePista1", 59.599f);
        }

        if(PlayerPrefs.HasKey("omegaRacersRecordePista2"))
        {
            recordePistas[1] = PlayerPrefs.GetFloat("omegaRacersRecordePista2");
        }

        else
        {
            PlayerPrefs.SetFloat("omegaRacersRecordePista2", 59.599f);
        }

        return "";
    }
}
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Qua Dez 06, 2017 11:41 pm

O primeiro código está errado, eu acabei pegando a versão antiga do código, onde era tudo na mesma cena, sim fiz muita coisa errada, eu considero ele como um código beta.

Esta é a atual versão, muita coisa ainda será modificada.

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MenuOptionsGame : MonoBehaviour {

    public Material mCam;
    private Camera gameCam;
    [SerializeField]
    private Slider[] sliders;
    [SerializeField]
    private Image[] botoes;
    [SerializeField]
    private Text[] objetosTextos;
    [SerializeField]
    private int movimentacaoHorizontal, movimentacaoVertical;
    [SerializeField]
    private bool ativaDpad;
    [SerializeField]
    private float direcionalGamepad;
    [SerializeField]
    private Color[] cores;
    [SerializeField]
    private int[,] resolusoesAceitas = new int[5,2];

    private void Awake()
    {
        gameCam = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
        CamNewTexture();
    }

    //Fazendo render das texturas para câmera
    private void CamNewTexture()
    {
        if (gameCam.targetTexture != null)
        {
            gameCam.targetTexture.Release();
        }
        RenderTexture newTexture;
        newTexture = new RenderTexture(Screen.width, Screen.height, 24);
        gameCam.targetTexture = newTexture;
        gameCam.targetTexture.filterMode = FilterMode.Point;
        mCam.mainTexture = gameCam.targetTexture;
    }

    // Use this for initialization
    void Start ()
    {
        //Será verificado no objeto global o estado das variáveis, ajustar de acordo
       
        ControleVolumeMusica();
        ControleVolumeEfeitosSonoros();
        ResolucoesDoJogoSuportadas();
        QualidadeJoJogo();
        objetosTextos[0].text = GlobalController.indexTelaCheia == 0 ? "< Off >" : "< On >";

        PintarBotoes();
    }
   
   // Update is called once per frame
   void Update () {
        //Comandos pelo teclado
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            MovimentaParaEsquerda();
        }

        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            MovimentaParaDireita();
        }


        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            if (movimentacaoVertical < 5)
            {
                movimentacaoVertical ++;
                movimentacaoHorizontal = 0;
                PintarBotoes();
            }
        }

        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            if (movimentacaoVertical > 0)
            {
                movimentacaoVertical --;
                movimentacaoHorizontal = 0;
                PintarBotoes();
            }
        }

        if (Input.GetButtonDown("Submit") && movimentacaoVertical == 0)
        {
            if (movimentacaoHorizontal == 0)
            {
                GlobalController.TrocarCena("Menu");
            }
            else
            {
                GlobalController.SalvarConfiguraCoesJogo();
                AplicarConfiguracoes();
            }
        }

        //Movimentação gamepad vertical
        if (Input.GetAxisRaw("DPadY") != 0 && !ativaDpad)
        {
            direcionalGamepad = (int)Mathf.Sign(Input.GetAxis("DPadY")) * 1;
            if (direcionalGamepad < 0.5f)
            {
                ativaDpad = true;
                movimentacaoVertical = 1;
                movimentacaoHorizontal = 0;
                PintarBotoes();
            }
        }

        if (Input.GetAxisRaw("DPadY") != 0 && !ativaDpad)
        {
            direcionalGamepad = (int)Mathf.Sign(Input.GetAxis("DPadY")) * 1;
            if (direcionalGamepad > 0.5f)
            {
                ativaDpad = true;
                movimentacaoVertical = 0;
                movimentacaoHorizontal = 0;
                PintarBotoes();
            }
        }

        //Movimentando gamepad Horizontal
        if (Input.GetAxisRaw("DPadX") != 0 && !ativaDpad)
        {
            direcionalGamepad = (int)Mathf.Sign(Input.GetAxis("DPadX")) * 1;
            if (direcionalGamepad < 0.5f)
            {
                ativaDpad = true;
                MovimentaParaEsquerda();
            }
        }

        if (Input.GetAxisRaw("DPadX") != 0 && !ativaDpad)
        {
            direcionalGamepad = (int)Mathf.Sign(Input.GetAxis("DPadX")) * 1;
            if (direcionalGamepad > 0.5f)
            {
                ativaDpad = true;
                MovimentaParaDireita();
            }
        }
        //resetando o gamapad
        if (Input.GetAxis("DPadX") == 0)
        {
            ativaDpad = false;
        }
    }

    private void PintarBotoes()
    {
        if (movimentacaoVertical == 0)
        {
            botoes[0].color = movimentacaoHorizontal == 0 ? cores[0] : cores[1];
            botoes[1].color = movimentacaoHorizontal == 0 ? cores[1] : cores[0];
        }
        else
        {
            botoes[0].color = cores[1];
            botoes[1].color = cores[1];
        }

        int[,] posicoesSeletorOptions = new int[6, 2];

        posicoesSeletorOptions[0, 0] = -36;
        posicoesSeletorOptions[0, 1] = -635;
        posicoesSeletorOptions[1, 0] = -23;
        posicoesSeletorOptions[1, 1] = -279;
        posicoesSeletorOptions[2, 0] = 8;
        posicoesSeletorOptions[2, 1] = -163;
        posicoesSeletorOptions[3, 0] = 30;
        posicoesSeletorOptions[3, 1] = -39;
        posicoesSeletorOptions[4, 0] = 45;
        posicoesSeletorOptions[4, 1] = 97;
        posicoesSeletorOptions[5, 0] = 78;
        posicoesSeletorOptions[5, 1] = 249;

        botoes[2].rectTransform.localPosition = new Vector3(posicoesSeletorOptions[movimentacaoVertical, 0], posicoesSeletorOptions[movimentacaoVertical, 1], 0);
    }

    private void MovimentaParaEsquerda()
    {
        switch (movimentacaoVertical)
        {
            case 0:
                if (movimentacaoHorizontal == 1)
                {
                    movimentacaoHorizontal = 0;
                    PintarBotoes();
                }
                break;
            case 1:
                GlobalController.indexTelaCheia = 0;
                objetosTextos[0].text = GlobalController.indexTelaCheia == 0 ? "< Off >" : "< On >";
                PodeAplicarConfiguracoes();
                break;
            case 2:
                if (GlobalController.indexQualidade > 0)
                {
                    GlobalController.indexQualidade--;
                    QualidadeJoJogo();
                    PodeAplicarConfiguracoes();
                }
                break;
            case 3:
                if(GlobalController.indexResolucao > 0)
                {
                    GlobalController.indexResolucao--;
                    ResolucoesDoJogoSuportadas();
                    PodeAplicarConfiguracoes();
                }
                break;
            case 4:
                if(GlobalController.indexVolumeFX > 1)
                {
                    GlobalController.indexVolumeFX--;
                    ControleVolumeEfeitosSonoros();
                    PodeAplicarConfiguracoes();
                }
                break;
            case 5:
                if(GlobalController.indexVolumeMusica > 1)
                {
                    GlobalController.indexVolumeMusica--;
                    ControleVolumeMusica();
                    PodeAplicarConfiguracoes();
                }
                break;
        }
    }

    private void MovimentaParaDireita()
    {
        switch (movimentacaoVertical)
        {
            case 0:
                if (movimentacaoHorizontal == 0 && !GlobalController.podeAplicar)
                {
                    movimentacaoHorizontal = 1;
                    PintarBotoes();
                }
                break;
            case 1:
                GlobalController.indexTelaCheia = 1;
                objetosTextos[0].text = GlobalController.indexTelaCheia == 0 ? "< Off >" : "< On >";
                PodeAplicarConfiguracoes();
                break;
            case 2:
                if (GlobalController.indexQualidade < 5)
                {
                    GlobalController.indexQualidade++;
                    QualidadeJoJogo();
                    PodeAplicarConfiguracoes();
                }
                break;
            case 3:
                if (GlobalController.indexResolucao < GlobalController.quantidadeDeResolucoesSuportadas -1)
                {
                    GlobalController.indexResolucao++;
                    ResolucoesDoJogoSuportadas();
                    PodeAplicarConfiguracoes();
                }
                break;
            case 4:
                if (GlobalController.indexVolumeFX < 10)
                {
                    GlobalController.indexVolumeFX++;
                    ControleVolumeEfeitosSonoros();
                    PodeAplicarConfiguracoes();
                }
                break;
            case 5:
                if (GlobalController.indexVolumeMusica < 10)
                {
                    GlobalController.indexVolumeMusica++;
                    ControleVolumeMusica();
                    PodeAplicarConfiguracoes();
                }
                break;
        }
    }

    private void QualidadeJoJogo()
    {
        string[] nomes = QualitySettings.names;
        objetosTextos[1].text = "< " + nomes[GlobalController.indexQualidade] + " >";
    }

    private void ResolucoesDoJogoSuportadas()
    {
        GlobalController.quantidadeDeResolucoesSuportadas = 0;
        Resolution[] resolucoesSuportadas = Screen.resolutions; //Armazena todas as resoluções suportadas pelo computador

        int[,] novasResolucoes = new int[3, 2]; //Resoluções que queremos suportar
        novasResolucoes[0, 0] = 1366;
        novasResolucoes[0, 1] = 768;
        novasResolucoes[1, 0] = 1280;
        novasResolucoes[1, 1] = 720;
        novasResolucoes[2, 0] = 1920;
        novasResolucoes[2, 1] = 1080;

        for (int y = 0; y < resolucoesSuportadas.Length; y++)
        {
            for (int x = 0; x < 3; x++)
            {
                //Comparando as resoluções suportadas e as que desejamos suportar, no final armazenando apenas as que o equipamento suporta
                if (resolucoesSuportadas[y].width == novasResolucoes[x, 0] && resolucoesSuportadas[y].height == novasResolucoes[x, 1])
                {
                    resolusoesAceitas[x, 0] = resolucoesSuportadas[y].width;
                    resolusoesAceitas[x, 1] = resolucoesSuportadas[y].height;
                    GlobalController.quantidadeDeResolucoesSuportadas++;
                }
            }
        }
        print("qtdResoluções" + GlobalController.quantidadeDeResolucoesSuportadas);
        objetosTextos[2].text = "< " + resolusoesAceitas[GlobalController.indexResolucao, 0] + "x" + resolusoesAceitas[GlobalController.indexResolucao, 1] + " >";
    }

    private void ControleVolumeEfeitosSonoros()
    {
        sliders[0].value = GlobalController.indexVolumeFX;
    }

    private void ControleVolumeMusica()
    {
        sliders[1].value = GlobalController.indexVolumeMusica;
    }

    private void AplicarConfiguracoes()
    {
        Screen.SetResolution(resolusoesAceitas[GlobalController.indexResolucao, 0], resolusoesAceitas[GlobalController.indexResolucao, 1], GlobalController.telaCheia);
        QualitySettings.SetQualityLevel(GlobalController.indexQualidade);
        Screen.fullScreen = GlobalController.telaCheia;
        CamNewTexture();
        print("Aplicado configurações");
        botoes[1].enabled = false;
        GlobalController.podeAplicar = true;
        objetosTextos[3].enabled = false;
        movimentacaoHorizontal = 0;
        PintarBotoes();
    }

    private void PodeAplicarConfiguracoes()
    {
        GlobalController.podeAplicar = false;
        objetosTextos[3].enabled = true;
        botoes[1].enabled = true;
    }
}
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por Flávio em Dom Dez 10, 2017 1:15 am

valeu guimaraf!  muita coisa aí é novidade p mim mas com o tempo eu vou aprendendo.
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 787
REPUTAÇÃO : 21
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Definindo as resoluções suportadas

Mensagem por guimaraf em Dom Dez 10, 2017 11:29 am

@Flávio escreveu:valeu guimaraf!  muita coisa aí é novidade p mim mas com o tempo eu vou aprendendo.
Estamos todos aprendendo, um abraço.
guimaraf
guimaraf
Programador

Masculino PONTOS : 987
REPUTAÇÃO : 42
Idade : 36
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Definindo as resoluções suportadas WvDYdlf

Ver perfil do usuário http://guimaraf.github.io

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum