Pause, TimeScale, Música e Botões
4 participantes
Página 1 de 1
Pause, TimeScale, Música e Botões
Boa noite e Feliz Natal. (:
Estou criando um jogo 2D para mobile. É um jogo de gerenciamento. Eu tenho algumas dúvidas.
Fiz um sistema para pausar e desacelerar/acelerar o meu jogo usando o Time.timeScale.
E para não bugar meu sistema de músicas em background, tive que setar o pitch das músicas para "audioJogo.pitch = Time.timeScale".
Mesmo com o jogo pausado (Time.timeScale = 0), os botões do jogo ainda funcionam. O jogador consegue comprar e vender itens, por exemplo (não quero isso).
Dúvidas:
- Existe algum modo de pausar mais efetivo, sem usar o TimeScale?
- Existe algum modo de desacelerar/acelerar sem alterar a velocidade da música de modo que não bugue a mudança de músicas?
- Existe algum método simplificado de fazer os botões não funcionarem quando o jogo estiver pausado (além de criar uma variável e colocar num if)? Quero que a maioria dos botões não funcionem quando o jogo estiver pausado. Como tenho muitos botões no jogo, queria uma forma mais simples de resolver isso.
Ainda estou aprendendo. Então, se tiverem à mão, podem mandar tutoriais mais completos sem problema nenhum.
Obrigado.
Estou criando um jogo 2D para mobile. É um jogo de gerenciamento. Eu tenho algumas dúvidas.
Fiz um sistema para pausar e desacelerar/acelerar o meu jogo usando o Time.timeScale.
E para não bugar meu sistema de músicas em background, tive que setar o pitch das músicas para "audioJogo.pitch = Time.timeScale".
Mesmo com o jogo pausado (Time.timeScale = 0), os botões do jogo ainda funcionam. O jogador consegue comprar e vender itens, por exemplo (não quero isso).
Dúvidas:
- Existe algum modo de pausar mais efetivo, sem usar o TimeScale?
- Existe algum modo de desacelerar/acelerar sem alterar a velocidade da música de modo que não bugue a mudança de músicas?
- Existe algum método simplificado de fazer os botões não funcionarem quando o jogo estiver pausado (além de criar uma variável e colocar num if)? Quero que a maioria dos botões não funcionem quando o jogo estiver pausado. Como tenho muitos botões no jogo, queria uma forma mais simples de resolver isso.
Ainda estou aprendendo. Então, se tiverem à mão, podem mandar tutoriais mais completos sem problema nenhum.
Obrigado.
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Pause, TimeScale, Música e Botões
se vc n quer que mexa os botoes vc tem desativar o script q comanda esses botoes,pq quando vc pausa,tem q da pra mexer no menu se n o jogador n consegue sair do jogo nem fazer nadaJoelMJunior escreveu:Boa noite e Feliz Natal. (:
Estou criando um jogo 2D para mobile. É um jogo de gerenciamento. Eu tenho algumas dúvidas.
Fiz um sistema para pausar e desacelerar/acelerar o meu jogo usando o Time.timeScale.
E para não bugar meu sistema de músicas em background, tive que setar o pitch das músicas para "audioJogo.pitch = Time.timeScale".
Mesmo com o jogo pausado (Time.timeScale = 0), os botões do jogo ainda funcionam. O jogador consegue comprar e vender itens, por exemplo (não quero isso).
Dúvidas:
- Existe algum modo de pausar mais efetivo, sem usar o TimeScale?
- Existe algum modo de desacelerar/acelerar sem alterar a velocidade da música de modo que não bugue a mudança de músicas?
- Existe algum método simplificado de fazer os botões não funcionarem quando o jogo estiver pausado (além de criar uma variável e colocar num if)? Quero que a maioria dos botões não funcionem quando o jogo estiver pausado. Como tenho muitos botões no jogo, queria uma forma mais simples de resolver isso.
Ainda estou aprendendo. Então, se tiverem à mão, podem mandar tutoriais mais completos sem problema nenhum.
Obrigado.
diegopds- Mestre
- PONTOS : 3420
REPUTAÇÃO : 52
Idade : 26
Respeito as regras :
Re: Pause, TimeScale, Música e Botões
Sim, a questão é como fazer isso de uma forma simplificada. A única forma que eu sei até agora seria criar uma bool para identificar se o jogo está pausado e criar uma if em cada void de cada botão.
Ainda não encontrei resposta para as outras dúvidas também.
Ainda não encontrei resposta para as outras dúvidas também.
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Pause, TimeScale, Música e Botões
Eu usaria eventos que seria uma forma mais limpa de fazer os botões ficarem desativados quando pausase o jogo, mas daí você teria que entrar nos Scripts de cada botão e associar o evento neles.
Uma alternativa mais "rápida" é colocar esse comando na ação de pause:
Assim com o Find ele coloca dentro do array todos os objetos em cena do tipo Button e percorre esse array desativando todos eles (menos o próprio botão de pause).
Daí pra ativar de novo, basta fazer o inverso.
Uma alternativa mais "rápida" é colocar esse comando na ação de pause:
- Código:
var buttonsOnScene = GameObject.FindObjectsWithType<Button>();
foreach(var button in buttonsOnScene){
if(button != gameObject)
button.interactable = false;
}
Assim com o Find ele coloca dentro do array todos os objetos em cena do tipo Button e percorre esse array desativando todos eles (menos o próprio botão de pause).
Daí pra ativar de novo, basta fazer o inverso.
Re: Pause, TimeScale, Música e Botões
o/
Sei de uma forma simples tbm para desativar todos os buttons!
*Crie uma imagem na hierarquia: Create/UI/Image;
*Deixe ela transparente com alfa no zero;
*Deixe esta imagem no tamanho da tela, marcado com a opção "Raycast Target" (se marcado, buttons abaixo não serão "apertados");
*Importante que, na hierarquia, a imagem fique abaixo dos buttons; (os botões que ficarem acima irão funcionar)
*Para ativar isso por script:
talImagem.GetComponent<Image> ().raycastTarget = false /OU/ true;
Talvez essa opção seja mais confortável pra vc usar
Sei de uma forma simples tbm para desativar todos os buttons!
*Crie uma imagem na hierarquia: Create/UI/Image;
*Deixe ela transparente com alfa no zero;
*Deixe esta imagem no tamanho da tela, marcado com a opção "Raycast Target" (se marcado, buttons abaixo não serão "apertados");
*Importante que, na hierarquia, a imagem fique abaixo dos buttons; (os botões que ficarem acima irão funcionar)
*Para ativar isso por script:
talImagem.GetComponent<Image> ().raycastTarget = false /OU/ true;
Talvez essa opção seja mais confortável pra vc usar
Nalfam- MembroAvançado
- PONTOS : 2436
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Tópicos semelhantes
» Dúvida sobre o Time.timeScale no Unity para sistema de Pause
» [DÚVIDA] APERTAR 2 VAI PRA PRÓXIMA MÚSICA, APERTAR 1 VOLTA A MÚSICA ANTERIOR
» Error com TimeScale
» Time.timeScale
» ADICIONAR EXCEÇÃO AO TIMESCALE
» [DÚVIDA] APERTAR 2 VAI PRA PRÓXIMA MÚSICA, APERTAR 1 VOLTA A MÚSICA ANTERIOR
» Error com TimeScale
» Time.timeScale
» ADICIONAR EXCEÇÃO AO TIMESCALE
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos