SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
+2
Weslley
MeverPlays
6 participantes
Página 1 de 1
SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Opa, e aí galera! to com um problemas bastante chato que ate agr não consegui resolver. estou usando o script de menu do marcos, que utiliza UI's, porém quando tento usar um outro script que tbm usa um botão que esta sendo usado pelo script MENU do Marcos, simplesmente não funciona. vou explicar melhor: o script MENU do Marcos usa um button UI chamado "Jogar" que tem suas devidas funções funcionando de boa, ate ai tudo bem, mas aí eu quero adicionar uma função de quando clicar executar um som nesse msm botão "Jogar" (que esta sendo usado no script MENU tbm kk) so que não funciona, é como se o script MENU estivesse impedindo algo, tanto por script, como pelo proprio unity ( na parte On Click( ) ) , não consegui adicionar o som ao clicar :/
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
bom depende de como você esta fazendo
vá no método do botão "Jogar" e faça as devidas implementações
talvez o clip não toque pq vai trocar de cena então vc pode usar o IEnumerator para esperar um tempinho
vá no método do botão "Jogar" e faça as devidas implementações
talvez o clip não toque pq vai trocar de cena então vc pode usar o IEnumerator para esperar um tempinho
Weslley- Moderador
- PONTOS : 5744
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Pra Colocar Som num Botão não precisa de Script!MeverPlays escreveu:Opa, e aí galera! to com um problemas bastante chato que ate agr não consegui resolver. estou usando o script de menu do marcos, que utiliza UI's, porém quando tento usar um outro script que tbm usa um botão que esta sendo usado pelo script MENU do Marcos, simplesmente não funciona. vou explicar melhor: o script MENU do Marcos usa um button UI chamado "Jogar" que tem suas devidas funções funcionando de boa, ate ai tudo bem, mas aí eu quero adicionar uma função de quando clicar executar um som nesse msm botão "Jogar" (que esta sendo usado no script MENU tbm kk) so que não funciona, é como se o script MENU estivesse impedindo algo, tanto por script, como pelo proprio unity ( na parte On Click( ) ) , não consegui adicionar o som ao clicar :/
é só Linkar um AudioSource no Botão e Escolher a Ação,Depois Linkar o Audio
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
sim AndyShow, porém nem isso funciona..
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
É por que o menu não foi feito para ser reutilizado. Ele cria automaticamente as funções no script, então todo botão é ressetado.
Você não vai achar um script por ai que gera um menu com funções linkadas e tudo mais do nada que seja "compatível" com tudo.
Para poder reutilizar algum botão, você deve criar um menu meio que por conta, ou fazer o script chamar algum comando dentro da void que o meu script já tem, pois ele é feito exclusivamente para aqueles botões que são designados nas variáveis.
Você não vai achar um script por ai que gera um menu com funções linkadas e tudo mais do nada que seja "compatível" com tudo.
Para poder reutilizar algum botão, você deve criar um menu meio que por conta, ou fazer o script chamar algum comando dentro da void que o meu script já tem, pois ele é feito exclusivamente para aqueles botões que são designados nas variáveis.
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
O script do marcos apaga todos eventos do onclick do botao e adiciona novos só para o sistema de menu.
Então basta que não apaguemos todas funções do botao. Isso vai deixar o sistema vulneravel a erros que voce possa cometer!!
Basta ir no script de menu do marcos e comentar a linha
Pronto, ja pode adicionar coisas no onclick do botao....
Lembrando tome cuidado com o que vai por pra não dar um erro!
Então basta que não apaguemos todas funções do botao. Isso vai deixar o sistema vulneravel a erros que voce possa cometer!!
Basta ir no script de menu do marcos e comentar a linha
- Código:
BotaoJogar.onClick = new Button.ButtonClickedEvent();
Pronto, ja pode adicionar coisas no onclick do botao....
Lembrando tome cuidado com o que vai por pra não dar um erro!
RenanMSV- Instrutor
- PONTOS : 4501
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
como assim "deixar o sistema vulneravel a erros que voce possa cometer!!"??
"comentar a linha..."?? excluir?
"comentar a linha..."?? excluir?
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Comentar uma linha é adicionar // no começo dela.
Deixe a linha assim:
Deixe a linha assim:
- Código:
//BotaoJogar.onClick = new Button.ButtonClickedEvent();
RenanMSV- Instrutor
- PONTOS : 4501
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
e não é que funcionou :D vllw msm cara.
mas pode me explicar oq essa parte do script faz?
mas pode me explicar oq essa parte do script faz?
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
- Código:
BotaoJogar.onClick = new Button.ButtonClickedEvent();
Button é um script feito pela equipe do Unity... o script controla tudo, desde sprite, clique, e td mais do botao em que o script está atachado.
onClick é uma variavel do tipo ButtonClickedEvent().
Quando vc usa aquela linha voce recria a variavel, e uma variavel recriada é vazia, ou seja o onclick do botao vai se tornar vazio.
Logo depois voce pode adicionar novas coisas para esse botao fazer...
Então, se vc usar essa linha voce vai apagar td o que vc colocou no onclick do inspector.
E quando eu digo "deixar o sistema vulneravel a erros que voce possa cometer" é quando vc coloca algo no onclick do inspector que faça com que o sistema de menu nao funcione. O marcos recriou o onclick para que não tenha maneiras de ninguem "bugar" o sistema.
RenanMSV- Instrutor
- PONTOS : 4501
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
hm.. entendi! bom acabei de testar aq e tudo funcionou ao menos 2 coisas, o botão "Salvar" não executa o som, e tbm não salva as preferencias :/ ja reverti oq vc acabou de dizer do botão para o original que o marcos fez msm assim as pref não salvam quando a cena é iniciada.
meu script está da seguinte forma:
meu script está da seguinte forma:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Linq;
public class MENU : MonoBehaviour
{
[Header("Menu de inicio")]
public Button BotaoJogar;
public Button BotaoOpcoes;
public Button BotaoCreditos;
public Button BotaoSair;
[Space(20)]
[Header("Menu Opções")]
public Slider BarraVolume;
public Toggle CaixaModoJanela;
public Dropdown Resolucoes;
public Button BotaoVoltarOP, BotaoSalvarPref, BotaoVoltarCR;
[Space(20)]
public Button qualityButtonFastest;
public Button qualityButtonGood;
public Button qualityButtonFantastic;
[Space(20)]
public GameObject panelOpções;
public GameObject panelCreditos;
public string nomeCenaJogo = "CENA";
private string nomeDaCena;
private float VOLUME;
private int qualidadeGrafica, modoJanelaAtivo, resolucaoSalveIndex;
private bool telaCheiaAtivada;
private Resolution[] resolucoesSuportadas;
private int indexQuality;
void Awake()
{
DontDestroyOnLoad(transform.gameObject);
resolucoesSuportadas = Screen.resolutions;
}
void Start()
{
Opcoes(false);
Creditos(false);
ChecarResolucoes();
AjustarQualidades();
if (PlayerPrefs.HasKey("RESOLUCAO"))
{
int numResoluc = PlayerPrefs.GetInt("RESOLUCAO");
if (resolucoesSuportadas.Length <= numResoluc)
{
PlayerPrefs.DeleteKey("RESOLUCAO");
}
}
//
nomeDaCena = SceneManager.GetActiveScene().name;
Cursor.visible = true;
Time.timeScale = 1;
//
BarraVolume.minValue = 0;
BarraVolume.maxValue = 1;
//=============== SAVES===========//
if (PlayerPrefs.HasKey("VOLUME"))
{
VOLUME = PlayerPrefs.GetFloat("VOLUME");
BarraVolume.value = VOLUME;
}
else
{
PlayerPrefs.SetFloat("VOLUME", 1);
BarraVolume.value = 1;
}
//=============MODO JANELA===========//
if (PlayerPrefs.HasKey("modoJanela"))
{
modoJanelaAtivo = PlayerPrefs.GetInt("modoJanela");
if (modoJanelaAtivo == 1)
{
Screen.fullScreen = false;
CaixaModoJanela.isOn = true;
}
else
{
Screen.fullScreen = true;
CaixaModoJanela.isOn = false;
}
}
else
{
modoJanelaAtivo = 0;
PlayerPrefs.SetInt("modoJanela", modoJanelaAtivo);
CaixaModoJanela.isOn = false;
Screen.fullScreen = true;
}
//========RESOLUCOES========//
if (modoJanelaAtivo == 1)
{
telaCheiaAtivada = false;
}
else
{
telaCheiaAtivada = true;
}
if (PlayerPrefs.HasKey("RESOLUCAO"))
{
resolucaoSalveIndex = PlayerPrefs.GetInt("RESOLUCAO");
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
Resolucoes.value = resolucaoSalveIndex;
}
else
{
resolucaoSalveIndex = (resolucoesSuportadas.Length - 1);
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
PlayerPrefs.SetInt("RESOLUCAO", resolucaoSalveIndex);
Resolucoes.value = resolucaoSalveIndex;
}
//=========QUALIDADES=========//
if (PlayerPrefs.HasKey("qualidadeGrafica"))
{
qualidadeGrafica = PlayerPrefs.GetInt("qualidadeGrafica");
QualitySettings.SetQualityLevel(qualidadeGrafica);
}
else
{
QualitySettings.SetQualityLevel((QualitySettings.names.Length - 1));
qualidadeGrafica = (QualitySettings.names.Length - 1);
PlayerPrefs.SetInt("qualidadeGrafica", qualidadeGrafica);
}
// =========SETAR BOTOES==========//
//BotaoJogar.onClick = new Button.ButtonClickedEvent();
//BotaoOpcoes.onClick = new Button.ButtonClickedEvent();
//BotaoSair.onClick = new Button.ButtonClickedEvent();
//BotaoVoltarOP.onClick = new Button.ButtonClickedEvent();
//BotaoVoltarCR.onClick = new Button.ButtonClickedEvent();
//BotaoSalvarPref.onClick = new Button.ButtonClickedEvent();
BotaoJogar.onClick.AddListener(() => Jogar());
BotaoOpcoes.onClick.AddListener(() => Opcoes(true));
BotaoCreditos.onClick.AddListener(() => Creditos(true));
BotaoSair.onClick.AddListener(() => Sair());
BotaoVoltarOP.onClick.AddListener(() => Opcoes(false));
BotaoVoltarCR.onClick.AddListener(() => Creditos(false));
BotaoSalvarPref.onClick.AddListener(() => SalvarPreferencias());
}
//=========VOIDS DE CHECAGEM==========//
private void ChecarResolucoes()
{
Resolution[] resolucoesSuportadas = Screen.resolutions;
Resolucoes.options.Clear();
for (int y = 0; y < resolucoesSuportadas.Length; y++)
{
Resolucoes.options.Add(new Dropdown.OptionData() { text = resolucoesSuportadas[y].width + "x" + resolucoesSuportadas[y].height });
}
Resolucoes.captionText.text = "Resolucao";
}
private void AjustarQualidades()
{
//qualityButtonFastest.onClick = new Button.ButtonClickedEvent();
qualityButtonFastest.onClick.AddListener(() => { indexQuality = 0; });
//qualityButtonGood.onClick = new Button.ButtonClickedEvent();
qualityButtonGood.onClick.AddListener(() => { indexQuality = 1; });
//qualityButtonFantastic.onClick = new Button.ButtonClickedEvent();
qualityButtonFantastic.onClick.AddListener(() => { indexQuality = 4; });
}
private void Opcoes(bool ativarOP)
{
BotaoJogar.gameObject.SetActive(!ativarOP);
BotaoOpcoes.gameObject.SetActive(!ativarOP);
BotaoCreditos.gameObject.SetActive(!ativarOP);
BotaoSair.gameObject.SetActive(!ativarOP);
//
qualityButtonFastest.gameObject.SetActive(ativarOP);
qualityButtonGood.gameObject.SetActive(ativarOP);
qualityButtonFantastic.gameObject.SetActive(ativarOP);
BarraVolume.gameObject.SetActive(ativarOP);
CaixaModoJanela.gameObject.SetActive(ativarOP);
Resolucoes.gameObject.SetActive(ativarOP);
panelOpções.gameObject.SetActive(ativarOP);
BotaoVoltarOP.gameObject.SetActive(ativarOP);
BotaoSalvarPref.gameObject.SetActive(ativarOP);
}
private void Creditos(bool ativarCR)
{
BotaoJogar.gameObject.SetActive(!ativarCR);
BotaoOpcoes.gameObject.SetActive(!ativarCR);
BotaoCreditos.gameObject.SetActive(!ativarCR);
BotaoSair.gameObject.SetActive(!ativarCR);
//
panelCreditos.gameObject.SetActive(ativarCR);
BotaoVoltarCR.gameObject.SetActive(ativarCR);
}
private void SalvarPreferencias()
{
if (CaixaModoJanela.isOn == true)
{
modoJanelaAtivo = 1;
telaCheiaAtivada = false;
}
else
{
modoJanelaAtivo = 0;
telaCheiaAtivada = true;
}
PlayerPrefs.SetFloat("VOLUME", BarraVolume.value);
PlayerPrefs.SetInt("qualidadeGrafica", indexQuality);
PlayerPrefs.SetInt("modoJanela", modoJanelaAtivo);
PlayerPrefs.SetInt("RESOLUCAO", Resolucoes.value);
resolucaoSalveIndex = Resolucoes.value;
AplicarPreferencias();
}
private void AplicarPreferencias()
{
VOLUME = PlayerPrefs.GetFloat("VOLUME");
QualitySettings.SetQualityLevel(PlayerPrefs.GetInt("qualidadeGrafica"));
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
}
//===========VOIDS NORMAIS=========//
void Update()
{
if (SceneManager.GetActiveScene ().name != nomeDaCena) {
AudioListener.volume = VOLUME;
Destroy (gameObject);
}
}
private void Jogar()
{
SceneManager.LoadScene(nomeCenaJogo);
}
private void Sair()
{
Application.Quit();
}
}
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Voce quer botar som em todos botoes?
RenanMSV- Instrutor
- PONTOS : 4501
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
sim, todos. é possivel?
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Cria um método para tocar esse som e coloca ele ali em todos botoes ... ex
e lá na parte dos botoes insira um bloco para ser feito quando clicar assim:
Olhe bem como fica : () => { método do som; método padrao do marcos }
Abra chaves e coloque os métodos... Tem gente que gosta de deixar assim pra ficar mais visualizavel:
- Código:
void TocarSom(){
// tocar som
}
e lá na parte dos botoes insira um bloco para ser feito quando clicar assim:
- Código:
BotaoJogar.onClick.AddListener(() => {TocarSom(); Jogar();});
Olhe bem como fica : () => { método do som; método padrao do marcos }
Abra chaves e coloque os métodos... Tem gente que gosta de deixar assim pra ficar mais visualizavel:
- Código:
BotaoJogar.onClick.AddListener(() => {
TocarSom();
Jogar();
});
RenanMSV- Instrutor
- PONTOS : 4501
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
não deve add nada na void Tocar Som?
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
sim, voce deve fazer com que ela toque um som
RenanMSV- Instrutor
- PONTOS : 4501
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
ok, fiz isso está funcionando direitinho, vllw msm, vivendo e aprendendo..
e quanto as alterações não estarem sendo salvas, e somente o botão "Salvar" não executar o som? sabe dizer o pq desse erro?
e quanto as alterações não estarem sendo salvas, e somente o botão "Salvar" não executar o som? sabe dizer o pq desse erro?
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Poste o seu script como está agora, não podemos saber qual o bug se não sabermos o que você fez
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Bom, esta assim no momento:
em "Quality Settings" tem 3 opções de gráficos: Baixa (Pixel Light Count = 0), Média (Pixel Light Count = 2) e Alta (Pixel Light Count = 4). Não mudei muita coisa por isso não sei pq não quer salvar as alterações :/
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Linq;
public class MENU : MonoBehaviour
{
[Header("Menu de inicio")]
public Button BotaoJogar;
public Button BotaoOpcoes;
public Button BotaoCreditos;
public Button BotaoSair;
[Space(20)]
[Header("Menu Opções")]
public Slider BarraVolume;
public Toggle CaixaModoJanela;
public Dropdown Resolucoes;
public Button BotaoVoltarOP, BotaoSalvarPref, BotaoVoltarCR;
[Space(20)]
[Header("Som ao Clicar")]
public AudioClip sound;
private Button button { get { return GetComponent<Button>(); } }
private AudioSource source { get { return GetComponent<AudioSource>(); } }
[Space(20)]
[Header("Qualidade Gráfica")]
public Button qualityButtonFastest;
public Button qualityButtonGood;
public Button qualityButtonFantastic;
[Space(20)]
public GameObject panelOpções;
public GameObject panelCreditos;
public string nomeCenaJogo = "CENA";
private string nomeDaCena;
private float VOLUME;
private int qualidadeGrafica, modoJanelaAtivo, resolucaoSalveIndex;
private bool telaCheiaAtivada;
private Resolution[] resolucoesSuportadas;
private int indexQuality;
void Awake()
{
DontDestroyOnLoad(transform.gameObject);
resolucoesSuportadas = Screen.resolutions;
}
void Start()
{
// Tocar som ao clicar no botão UI
gameObject.AddComponent<AudioSource> ();
source.clip = sound;
source.playOnAwake = false;
Opcoes(false);
Creditos(false);
ChecarResolucoes();
AjustarQualidades();
if (PlayerPrefs.HasKey("RESOLUCAO"))
{
int numResoluc = PlayerPrefs.GetInt("RESOLUCAO");
if (resolucoesSuportadas.Length <= numResoluc)
{
PlayerPrefs.DeleteKey("RESOLUCAO");
}
}
//
nomeDaCena = SceneManager.GetActiveScene().name;
Cursor.visible = true;
Time.timeScale = 1;
//
BarraVolume.minValue = 0;
BarraVolume.maxValue = 1;
//=============== SAVES===========//
if (PlayerPrefs.HasKey("VOLUME"))
{
VOLUME = PlayerPrefs.GetFloat("VOLUME");
BarraVolume.value = VOLUME;
}
else
{
PlayerPrefs.SetFloat("VOLUME", 1);
BarraVolume.value = 1;
}
//=============MODO JANELA===========//
if (PlayerPrefs.HasKey("modoJanela"))
{
modoJanelaAtivo = PlayerPrefs.GetInt("modoJanela");
if (modoJanelaAtivo == 1)
{
Screen.fullScreen = false;
CaixaModoJanela.isOn = true;
}
else
{
Screen.fullScreen = true;
CaixaModoJanela.isOn = false;
}
}
else
{
modoJanelaAtivo = 0;
PlayerPrefs.SetInt("modoJanela", modoJanelaAtivo);
CaixaModoJanela.isOn = false;
Screen.fullScreen = true;
}
//========RESOLUCOES========//
if (modoJanelaAtivo == 1)
{
telaCheiaAtivada = false;
}
else
{
telaCheiaAtivada = true;
}
if (PlayerPrefs.HasKey("RESOLUCAO"))
{
resolucaoSalveIndex = PlayerPrefs.GetInt("RESOLUCAO");
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
Resolucoes.value = resolucaoSalveIndex;
}
else
{
resolucaoSalveIndex = (resolucoesSuportadas.Length - 1);
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
PlayerPrefs.SetInt("RESOLUCAO", resolucaoSalveIndex);
Resolucoes.value = resolucaoSalveIndex;
}
//=========QUALIDADES=========//
if (PlayerPrefs.HasKey("qualidadeGrafica"))
{
qualidadeGrafica = PlayerPrefs.GetInt("qualidadeGrafica");
QualitySettings.SetQualityLevel(qualidadeGrafica);
}
else
{
QualitySettings.SetQualityLevel((QualitySettings.names.Length - 1));
qualidadeGrafica = (QualitySettings.names.Length - 1);
PlayerPrefs.SetInt("qualidadeGrafica", qualidadeGrafica);
}
// =========SETAR BOTOES==========//
//BotaoJogar.onClick = new Button.ButtonClickedEvent();
//BotaoOpcoes.onClick = new Button.ButtonClickedEvent();
//BotaoSair.onClick = new Button.ButtonClickedEvent();
//BotaoVoltarOP.onClick = new Button.ButtonClickedEvent();
//BotaoVoltarCR.onClick = new Button.ButtonClickedEvent();
//BotaoSalvarPref.onClick = new Button.ButtonClickedEvent();
BotaoJogar.onClick.AddListener(() => {TocarSom(); Jogar();});
BotaoOpcoes.onClick.AddListener(() => {TocarSom(); Opcoes(true);});
BotaoCreditos.onClick.AddListener(() => {TocarSom(); Creditos(true);});
BotaoSair.onClick.AddListener(() => {TocarSom(); Sair();});
BotaoVoltarOP.onClick.AddListener(() => {TocarSom(); Opcoes(false);});
BotaoVoltarCR.onClick.AddListener(() => {TocarSom(); Creditos(false);});
BotaoSalvarPref.onClick.AddListener(() => {TocarSom(); SalvarPreferencias();});
}
//=========VOIDS DE CHECAGEM==========//
private void ChecarResolucoes()
{
Resolution[] resolucoesSuportadas = Screen.resolutions;
Resolucoes.options.Clear();
for (int y = 0; y < resolucoesSuportadas.Length; y++)
{
Resolucoes.options.Add(new Dropdown.OptionData() { text = resolucoesSuportadas[y].width + "x" + resolucoesSuportadas[y].height });
}
Resolucoes.captionText.text = "Resolucao";
}
private void AjustarQualidades()
{
//qualityButtonFastest.onClick = new Button.ButtonClickedEvent();
qualityButtonFastest.onClick.AddListener(() => {TocarSom(); indexQuality = 0; });
//qualityButtonGood.onClick = new Button.ButtonClickedEvent();
qualityButtonGood.onClick.AddListener(() => {TocarSom(); indexQuality = 1; });
//qualityButtonFantastic.onClick = new Button.ButtonClickedEvent();
qualityButtonFantastic.onClick.AddListener(() => {TocarSom(); indexQuality = 4; });
}
private void Opcoes(bool ativarOP)
{
BotaoJogar.gameObject.SetActive(!ativarOP);
BotaoOpcoes.gameObject.SetActive(!ativarOP);
BotaoCreditos.gameObject.SetActive(!ativarOP);
BotaoSair.gameObject.SetActive(!ativarOP);
//
qualityButtonFastest.gameObject.SetActive(ativarOP);
qualityButtonGood.gameObject.SetActive(ativarOP);
qualityButtonFantastic.gameObject.SetActive(ativarOP);
BarraVolume.gameObject.SetActive(ativarOP);
CaixaModoJanela.gameObject.SetActive(ativarOP);
Resolucoes.gameObject.SetActive(ativarOP);
panelOpções.gameObject.SetActive(ativarOP);
BotaoVoltarOP.gameObject.SetActive(ativarOP);
BotaoSalvarPref.gameObject.SetActive(ativarOP);
}
private void Creditos(bool ativarCR)
{
BotaoJogar.gameObject.SetActive(!ativarCR);
BotaoOpcoes.gameObject.SetActive(!ativarCR);
BotaoCreditos.gameObject.SetActive(!ativarCR);
BotaoSair.gameObject.SetActive(!ativarCR);
//
panelCreditos.gameObject.SetActive(ativarCR);
BotaoVoltarCR.gameObject.SetActive(ativarCR);
}
private void SalvarPreferencias()
{
if (CaixaModoJanela.isOn == true)
{
modoJanelaAtivo = 1;
telaCheiaAtivada = false;
}
else
{
modoJanelaAtivo = 0;
telaCheiaAtivada = true;
}
PlayerPrefs.SetFloat("VOLUME", BarraVolume.value);
PlayerPrefs.SetInt("qualidadeGrafica", indexQuality);
PlayerPrefs.SetInt("modoJanela", modoJanelaAtivo);
PlayerPrefs.SetInt("RESOLUCAO", Resolucoes.value);
resolucaoSalveIndex = Resolucoes.value;
AplicarPreferencias();
}
private void AplicarPreferencias()
{
VOLUME = PlayerPrefs.GetFloat("VOLUME");
QualitySettings.SetQualityLevel(PlayerPrefs.GetInt("qualidadeGrafica"));
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
}
//===========VOIDS NORMAIS=========//
void Update()
{
if (SceneManager.GetActiveScene ().name != nomeDaCena) {
AudioListener.volume = VOLUME;
Destroy (gameObject);
}
}
// Tocar som ao clicar no botão UI
void TocarSom ()
{
source.PlayOneShot(sound);
}
private void Jogar()
{
SceneManager.LoadScene(nomeCenaJogo);
}
private void Sair()
{
Application.Quit();
}
}
em "Quality Settings" tem 3 opções de gráficos: Baixa (Pixel Light Count = 0), Média (Pixel Light Count = 2) e Alta (Pixel Light Count = 4). Não mudei muita coisa por isso não sei pq não quer salvar as alterações :/
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
SCRIPT NÃO SALVA PREFERÊNCIAS
Opa e aí galera! to com um erro chato no script MENU do Marcos, faz 2 dias q to tentando resolver, o que esta acontecendo é que o menu não esta salvando as preferências para a cena do play, ou seja, eu aumento o volume, coloco o gráfico no máximo (existem 3: Baixo, Médio e Alto), e clico em jogar porém o jogo começa com os gráficos no médio (sendo que na cena em quality settings está em baixa) e o volume mudo, será que é alguma coisa na cena? ou no script? o.O modifiquei algumas coisas no script mas acredito eu que não mexi em nada relacionado a salvar as preferências. o script esta no momento da seguinte forma:
Se alguém puder ajudar já fico muito grato, preciso muito desse script.
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Linq;
public class MENU : MonoBehaviour
{
[Header("Menu de inicio")]
public Button BotaoJogar;
public Button BotaoOpcoes;
public Button BotaoCreditos;
public Button BotaoSair;
//[Space(20)]
[Header("Menu Opções")]
public Slider BarraVolume;
public Toggle CaixaModoJanela;
public Dropdown Resolucoes;
public Button BotaoVoltarOP, BotaoSalvarPref, BotaoVoltarCR;
//[Space(20)]
[Header("Som ao Clicar")]
public AudioClip sound;
private Button button { get { return GetComponent<Button>(); } }
private AudioSource source { get { return GetComponent<AudioSource>(); } }
//[Space(20)]
[Header("Qualidade Gráfica")]
public Button qualityButtonFastest;
public Button qualityButtonGood;
public Button qualityButtonFantastic;
//[Space(20)]
[Header("Paineis")]
public GameObject painelOpções;
public GameObject painelCreditos;
//[Space(20)]
public string nomeCenaJogo = "CENA";
private string nomeDaCena;
private float VOLUME;
private int qualidadeGrafica, modoJanelaAtivo, resolucaoSalveIndex;
private bool telaCheiaAtivada;
private Resolution[] resolucoesSuportadas;
private int indexQuality;
void Awake()
{
DontDestroyOnLoad(transform.gameObject);
resolucoesSuportadas = Screen.resolutions;
}
void Start()
{
// Tocar som ao clicar no botão UI
gameObject.AddComponent<AudioSource> ();
source.clip = sound;
source.playOnAwake = false;
Opcoes(false);
Creditos(false);
ChecarResolucoes();
AjustarQualidades();
//
if (PlayerPrefs.HasKey("RESOLUCAO"))
{
int numResoluc = PlayerPrefs.GetInt("RESOLUCAO");
if (resolucoesSuportadas.Length <= numResoluc)
{
PlayerPrefs.DeleteKey("RESOLUCAO");
}
}
//
nomeDaCena = SceneManager.GetActiveScene().name;
Cursor.visible = true;
Time.timeScale = 1;
//
BarraVolume.minValue = 0;
BarraVolume.maxValue = 1;
//=============== SAVES===========//
if (PlayerPrefs.HasKey("VOLUME"))
{
VOLUME = PlayerPrefs.GetFloat("VOLUME");
BarraVolume.value = VOLUME;
}
else
{
PlayerPrefs.SetFloat("VOLUME", 1);
BarraVolume.value = 1;
}
//=============MODO JANELA===========//
if (PlayerPrefs.HasKey("modoJanela"))
{
modoJanelaAtivo = PlayerPrefs.GetInt("modoJanela");
if (modoJanelaAtivo == 1)
{
Screen.fullScreen = false;
CaixaModoJanela.isOn = true;
}
else
{
Screen.fullScreen = true;
CaixaModoJanela.isOn = false;
}
}
else
{
modoJanelaAtivo = 0;
PlayerPrefs.SetInt("modoJanela", modoJanelaAtivo);
CaixaModoJanela.isOn = false;
Screen.fullScreen = true;
}
//========RESOLUCOES========//
if (modoJanelaAtivo == 1)
{
telaCheiaAtivada = false;
}
else
{
telaCheiaAtivada = true;
}
if (PlayerPrefs.HasKey("RESOLUCAO"))
{
resolucaoSalveIndex = PlayerPrefs.GetInt("RESOLUCAO");
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
Resolucoes.value = resolucaoSalveIndex;
}
else
{
resolucaoSalveIndex = (resolucoesSuportadas.Length - 1);
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
PlayerPrefs.SetInt("RESOLUCAO", resolucaoSalveIndex);
Resolucoes.value = resolucaoSalveIndex;
}
//=========QUALIDADES=========//
if (PlayerPrefs.HasKey("qualidadeGrafica"))
{
qualidadeGrafica = PlayerPrefs.GetInt("qualidadeGrafica");
QualitySettings.SetQualityLevel(qualidadeGrafica);
}
else
{
QualitySettings.SetQualityLevel((QualitySettings.names.Length - 1));
qualidadeGrafica = (QualitySettings.names.Length - 1);
PlayerPrefs.SetInt("qualidadeGrafica", qualidadeGrafica);
}
// =========SETAR BOTOES==========//
//BotaoJogar.onClick = new Button.ButtonClickedEvent();
//BotaoOpcoes.onClick = new Button.ButtonClickedEvent();
//BotaoSair.onClick = new Button.ButtonClickedEvent();
//BotaoVoltarOP.onClick = new Button.ButtonClickedEvent();
//BotaoVoltarCR.onClick = new Button.ButtonClickedEvent();
//BotaoSalvarPref.onClick = new Button.ButtonClickedEvent();
BotaoJogar.onClick.AddListener(() => {TocarSom(); Jogar();});
BotaoOpcoes.onClick.AddListener(() => {TocarSom(); Opcoes(true);});
BotaoCreditos.onClick.AddListener(() => {TocarSom(); Creditos(true);});
BotaoSair.onClick.AddListener(() => {TocarSom(); Sair();});
BotaoVoltarOP.onClick.AddListener(() => {TocarSom(); Opcoes(false);});
BotaoVoltarCR.onClick.AddListener(() => {TocarSom(); Creditos(false);});
BotaoSalvarPref.onClick.AddListener(() => {TocarSom(); SalvarPreferencias();});
}
//=========VOIDS DE CHECAGEM==========//
private void ChecarResolucoes()
{
Resolution[] resolucoesSuportadas = Screen.resolutions;
Resolucoes.options.Clear();
for (int y = 0; y < resolucoesSuportadas.Length; y++)
{
Resolucoes.options.Add(new Dropdown.OptionData() { text = resolucoesSuportadas[y].width + "x" + resolucoesSuportadas[y].height });
}
Resolucoes.captionText.text = "Resolucao";
}
private void AjustarQualidades()
{
qualityButtonFastest.onClick = new Button.ButtonClickedEvent();
qualityButtonFastest.onClick.AddListener(() => { indexQuality = 1; });
qualityButtonGood.onClick = new Button.ButtonClickedEvent();
qualityButtonGood.onClick.AddListener(() => { indexQuality = 2; });
qualityButtonFantastic.onClick = new Button.ButtonClickedEvent();
qualityButtonFantastic.onClick.AddListener(() => { indexQuality = 3; });
}
private void Opcoes(bool ativarOP)
{
BotaoJogar.gameObject.SetActive(!ativarOP);
BotaoOpcoes.gameObject.SetActive(!ativarOP);
BotaoCreditos.gameObject.SetActive(!ativarOP);
BotaoSair.gameObject.SetActive(!ativarOP);
//
qualityButtonFastest.gameObject.SetActive(ativarOP);
qualityButtonGood.gameObject.SetActive(ativarOP);
qualityButtonFantastic.gameObject.SetActive(ativarOP);
BarraVolume.gameObject.SetActive(ativarOP);
CaixaModoJanela.gameObject.SetActive(ativarOP);
Resolucoes.gameObject.SetActive(ativarOP);
painelOpções.gameObject.SetActive(ativarOP);
BotaoVoltarOP.gameObject.SetActive(ativarOP);
BotaoSalvarPref.gameObject.SetActive(ativarOP);
}
private void Creditos(bool ativarCR)
{
BotaoJogar.gameObject.SetActive(!ativarCR);
BotaoOpcoes.gameObject.SetActive(!ativarCR);
BotaoCreditos.gameObject.SetActive(!ativarCR);
BotaoSair.gameObject.SetActive(!ativarCR);
//
painelCreditos.gameObject.SetActive(ativarCR);
BotaoVoltarCR.gameObject.SetActive(ativarCR);
}
private void SalvarPreferencias()
{
if (CaixaModoJanela.isOn == true)
{
modoJanelaAtivo = 1;
telaCheiaAtivada = false;
}
else
{
modoJanelaAtivo = 0;
telaCheiaAtivada = true;
}
PlayerPrefs.SetFloat("VOLUME", BarraVolume.value);
PlayerPrefs.SetInt("qualidadeGrafica", indexQuality);
PlayerPrefs.SetInt("modoJanela", modoJanelaAtivo);
PlayerPrefs.SetInt("RESOLUCAO", Resolucoes.value);
resolucaoSalveIndex = Resolucoes.value;
AplicarPreferencias();
}
private void AplicarPreferencias()
{
VOLUME = PlayerPrefs.GetFloat("VOLUME");
QualitySettings.SetQualityLevel(PlayerPrefs.GetInt("qualidadeGrafica"));
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
}
//===========VOIDS NORMAIS=========//
void Update()
{
if (SceneManager.GetActiveScene().name != nomeDaCena)
{
AudioListener.volume = VOLUME;
Destroy(gameObject);
}
}
// Tocar som ao clicar no botão UI
void TocarSom ()
{
source.PlayOneShot(sound);
}
private void Jogar()
{
SceneManager.LoadScene(nomeCenaJogo);
}
private void Sair()
{
Application.Quit();
}
}
Se alguém puder ajudar já fico muito grato, preciso muito desse script.
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Vc já tentou tirar o comentário onde vc esta fazendo o novo evento OnClick do botão BotaoSalvarPref na linha 159
- Código:
BotaoSalvarPref.onClick = new Button.ButtonClickedEvent();
Weslley- Moderador
- PONTOS : 5744
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Sim, tentei agr a pouco mas não mudou nada, continua sem salvar :/
Inclusive achei estranho uma coisa, na cena "TestMap" em quality settings ta como default a qualidade "Baixa" porém independente da qualidade que eu escolher no menu principal, quando da play a qualidade fica em "Média" o.O
Inclusive achei estranho uma coisa, na cena "TestMap" em quality settings ta como default a qualidade "Baixa" porém independente da qualidade que eu escolher no menu principal, quando da play a qualidade fica em "Média" o.O
MeverPlays- Mestre
- PONTOS : 3885
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
- Código:
private void SalvarPreferencias()
{
if (CaixaModoJanela.isOn == true)
{
modoJanelaAtivo = 1;
telaCheiaAtivada = false;
}
else
{
modoJanelaAtivo = 0;
telaCheiaAtivada = true;
}
PlayerPrefs.SetFloat("VOLUME", BarraVolume.value);
PlayerPrefs.SetInt("qualidadeGrafica", indexQuality);
PlayerPrefs.SetInt("modoJanela", modoJanelaAtivo);
PlayerPrefs.SetInt("RESOLUCAO", Resolucoes.value);
resolucaoSalveIndex = Resolucoes.value;
AplicarPreferencias();
}
private void AplicarPreferencias()
{
VOLUME = PlayerPrefs.GetFloat("VOLUME");
QualitySettings.SetQualityLevel(PlayerPrefs.GetInt("qualidadeGrafica"));
Screen.SetResolution(resolucoesSuportadas[resolucaoSalveIndex].width, resolucoesSuportadas[resolucaoSalveIndex].height, telaCheiaAtivada);
}
Esta é a parte responsável por salvar... ali você coloca o que deseja salvar e aplicar...
O que exatamente não está dando certo?
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
realmente so o q faltou pra que o menu do Marcos fique completo e o sons dos botões...
tom ramber- Avançado
- PONTOS : 3157
REPUTAÇÃO : 12
Idade : 37
Áreas de atuação : Blender, Unity
Respeito as regras :
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
tom ramber escreveu:realmente so o q faltou pra que o menu do Marcos fique completo e o sons dos botões...
Vou refazer o tutorial de menu futuramente, pois a Unity sempre atualiza e acaba mudando alguma coisa que deixa os outros menus defasados.
Quando eu fizer isto, vou colocar sons nos botões também.
Re: SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
beleza...aguardarei ansiosamente...
tom ramber- Avançado
- PONTOS : 3157
REPUTAÇÃO : 12
Idade : 37
Áreas de atuação : Blender, Unity
Respeito as regras :
Tópicos semelhantes
» Problema com o script de menu pause do Marcos
» Como usar o script da unity "MouseLook" em outros scripts ?
» como acessar variáveis de outros scripts
» Acesser scripts de outros.
» Acessar outros scripts?
» Como usar o script da unity "MouseLook" em outros scripts ?
» como acessar variáveis de outros scripts
» Acesser scripts de outros.
» Acessar outros scripts?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos