Como colocar dois backgrounds diferentes para dois canvas diferentes?
2 participantes
Página 1 de 1
Como colocar dois backgrounds diferentes para dois canvas diferentes?
Fála pessoal, blza?
Seguinte, no menu elaborado pelo Marcos Schultz com botões de jogar, opções e sair, quando tento criar uma imagem de background para o menu, e outro background para o outro menu (o que tem o seletor de volume, de resolução, etc), não consigo carregar nenhum dos backgrounds. Apesar de eles aparecerem dentro do unity nas abas Scene ou na aba Game, quando aperto o play para ver como ficará as imagens de background não são renderizadas.
Porém estou recebendo um erro, que não tem nada a ver com as imagens, que é o seguinte:
NullReferenceException: Object reference not set to an instance of an object
MENU.Opcoes (Boolean ativarOP) (at Assets/Scripts/MENU.cs:135)
MENU.Start () (at Assets/Scripts/MENU.cs:32)
Ocorre que minhas variáveis no script MENU estão todas setadas dentro do unity, como pode-se ver na imagem abaixo:
O meu script está deste jeito:
Alguém sabe me dizer se o fato de estar ocorrendo este erro, é capaz de interferir na renderização das imagens de fundo?
E também como faço para setar a tal variável?
Valeu desde já se alguém puder me ajudar.
Seguinte, no menu elaborado pelo Marcos Schultz com botões de jogar, opções e sair, quando tento criar uma imagem de background para o menu, e outro background para o outro menu (o que tem o seletor de volume, de resolução, etc), não consigo carregar nenhum dos backgrounds. Apesar de eles aparecerem dentro do unity nas abas Scene ou na aba Game, quando aperto o play para ver como ficará as imagens de background não são renderizadas.
Porém estou recebendo um erro, que não tem nada a ver com as imagens, que é o seguinte:
NullReferenceException: Object reference not set to an instance of an object
MENU.Opcoes (Boolean ativarOP) (at Assets/Scripts/MENU.cs:135)
MENU.Start () (at Assets/Scripts/MENU.cs:32)
Ocorre que minhas variáveis no script MENU estão todas setadas dentro do unity, como pode-se ver na imagem abaixo:
O meu script está deste jeito:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Linq;
public class MENU : MonoBehaviour {
public Button BotaoJogar,BotaoOpcoes,BotaoSair;
[Space(20)]
public Slider BarraVolume;
public Toggle CaixaModoJanela;
public Dropdown Resolucoes, Qualidades;
public Button BotaoVoltar, BotaoSalvarPref;
[Space(20)]
public Text textoVol;
public Text titulo;
public string nomeCenaJogo = "CENA1";
private string nomeDaCena;
private float VOLUME;
private int qualidadeGrafica, modoJanelaAtivo, resolucaoSalveIndex;
private bool telaCheiaAtivada;
private Resolution[] resolucoesSuportadas;
void Awake(){
DontDestroyOnLoad (transform.gameObject);
resolucoesSuportadas = Screen.resolutions;
}
void Start () {
Opcoes (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);
Qualidades.value = qualidadeGrafica;
} else {
QualitySettings.SetQualityLevel((QualitySettings.names.Length-1));
qualidadeGrafica = (QualitySettings.names.Length-1);
PlayerPrefs.SetInt ("qualidadeGrafica", qualidadeGrafica);
Qualidades.value = qualidadeGrafica;
}
// =========SETAR BOTOES==========//
BotaoJogar.onClick = new Button.ButtonClickedEvent();
BotaoOpcoes.onClick = new Button.ButtonClickedEvent();
BotaoSair.onClick = new Button.ButtonClickedEvent();
BotaoVoltar.onClick = new Button.ButtonClickedEvent();
BotaoSalvarPref.onClick = new Button.ButtonClickedEvent();
BotaoJogar.onClick.AddListener(() => Jogar());
BotaoOpcoes.onClick.AddListener(() => Opcoes(true));
BotaoSair.onClick.AddListener(() => Sair());
BotaoVoltar.onClick.AddListener(() => Opcoes(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(){
string[] nomes = QualitySettings.names;
Qualidades.options.Clear ();
for(int y = 0; y < nomes.Length; y++){
Qualidades.options.Add(new Dropdown.OptionData() { text = nomes[y] });
}
Qualidades.captionText.text = "Qualidade";
}
private void Opcoes(bool ativarOP){
BotaoJogar.gameObject.SetActive (!ativarOP);
BotaoOpcoes.gameObject.SetActive (!ativarOP);
BotaoSair.gameObject.SetActive (!ativarOP);
titulo.gameObject.SetActive (!ativarOP);
//
textoVol.gameObject.SetActive (ativarOP);
BarraVolume.gameObject.SetActive (ativarOP);
CaixaModoJanela.gameObject.SetActive (ativarOP);
Resolucoes.gameObject.SetActive (ativarOP);
Qualidades.gameObject.SetActive (ativarOP);
BotaoVoltar.gameObject.SetActive (ativarOP);
BotaoSalvarPref.gameObject.SetActive (ativarOP);
}
//=========VOIDS DE SALVAMENTO==========//
private void SalvarPreferencias(){
if (CaixaModoJanela.isOn == true) {
modoJanelaAtivo = 1;
telaCheiaAtivada = false;
} else {
modoJanelaAtivo = 0;
telaCheiaAtivada = true;
}
PlayerPrefs.SetFloat ("VOLUME", BarraVolume.value);
PlayerPrefs.SetInt ("qualidadeGrafica", Qualidades.value);
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 ();
}
}
Alguém sabe me dizer se o fato de estar ocorrendo este erro, é capaz de interferir na renderização das imagens de fundo?
E também como faço para setar a tal variável?
Valeu desde já se alguém puder me ajudar.
kenau- Iniciante
- PONTOS : 2179
REPUTAÇÃO : 2
Respeito as regras :
Re: Como colocar dois backgrounds diferentes para dois canvas diferentes?
coloque "//" antes da variavel "public Text titulo" na linha 18 conforme o seu script;
e no inicio da linha 135 tambem,e dÊ um play dnovo,o erro deve esta nessa variavel "Text titulo", talvez se vc criar um novo Text na cena e linkar de novo suma o erro, só acho
eu assistir o video e mesmo com sua modificacao/script nao deu nenhum erro aqui,
e no inicio da linha 135 tambem,e dÊ um play dnovo,o erro deve esta nessa variavel "Text titulo", talvez se vc criar um novo Text na cena e linkar de novo suma o erro, só acho
eu assistir o video e mesmo com sua modificacao/script nao deu nenhum erro aqui,
Tópicos semelhantes
» [RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
» Como acessar o render settings e colocar skyboxes diferentes na unity 5
» TEM COMO COLOCAR UM VIDEO NO CANVAS?
» [RESOLVIDO]TEM COMO COLOCAR UM OBJETO 3D NO CANVAS?
» Como faço para pressionar dois botões de uma só vez?
» Como acessar o render settings e colocar skyboxes diferentes na unity 5
» TEM COMO COLOCAR UM VIDEO NO CANVAS?
» [RESOLVIDO]TEM COMO COLOCAR UM OBJETO 3D NO CANVAS?
» Como faço para pressionar dois botões de uma só vez?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos