Problemas após trocar de cenas
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Problemas após trocar de cenas
Pessoal, estou com problemas no meu projeto, é o seguinte, estou no menu principal e, quando teclo Enter na opção GameStart, faz um Fade na tela para escurecer, em seguida carrega a cena Loading que me leva para a cena Level1. Fiz um video que vai explicar bem visualmente o que está acontecendo.
Aqui está o script do menu principal, na cena "Main":
E aqui o script que abre o menu PAUSE, que me dá a opção de retomar o jogo ou voltar à cena Main:
Conforme os scripts, onde está o erro?
Aqui está o script do menu principal, na cena "Main":
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections;
public class GCMenuPrincipal : MonoBehaviour {
public GameObject menuPrincip;
public GameObject menuConfig;
public GameObject menuSoundOption;
public GameObject menuKeyConfig;
public GameObject menuScreenAdj;
public static int valor = 1;
public int mainSelection = 1;
public int soundSelections = 1;
public int keySelections = 1;
public int screenSelections = 1;
public static int level = 2;
public static int player = 3;
public static int credits = 3;
public static int habilitaMenu = 1;
public bool gameStart = false;
public int menus;
public AudioClip disparar;
private AudioSource somMenuMain;
void Awake() {
if (somMenuMain == null) {
somMenuMain = GetComponent<AudioSource>();
}
}
void Update() {
var menuQuit = GameObject.FindGameObjectWithTag("quit").GetComponent<GCQuitGame>().quitActive;
if (habilitaMenu == 1 && !menuQuit) {
menuPrincip.SetActive(true);
menuConfig.SetActive(false);
menuSoundOption.SetActive(false);
opcoesMenuPrincipal();
valorPadraoConfig();
}
if (habilitaMenu == 2 && !menuQuit) {
if (mainSelection == 1) {
var _fadeIn = GameObject.Find("FadeCamadaIn").GetComponent<FadeIn>();
_fadeIn.enabled = true;
StartCoroutine("carregaJogo");
}
}
if (gameStart) {
SceneManager.LoadScene("Loading");
StopCoroutine("carregaJogo");
}
if (habilitaMenu == 2 && !menuQuit) {
if (mainSelection == 2) {
menuPrincip.SetActive(false);
menuConfig.SetActive(true);
menuSoundOption.SetActive(false);
menuKeyConfig.SetActive(false);
menuScreenAdj.SetActive(false);
opcoesMenuConfig();
}
}
if (habilitaMenu == 3 && !menuQuit) {
if (valor == 4) {
menuPrincip.SetActive(false);
menuConfig.SetActive(false);
menuSoundOption.SetActive(true);
menuKeyConfig.SetActive(false);
menuScreenAdj.SetActive(false);
opcoesMenuSound();
}
}
if (habilitaMenu == 3 && !menuQuit) {
if (valor == 5) {
menuPrincip.SetActive(false);
menuConfig.SetActive(false);
menuSoundOption.SetActive(false);
menuKeyConfig.SetActive(true);
menuScreenAdj.SetActive(false);
opcoesMenuKey();
}
}
if (habilitaMenu == 3 && !menuQuit) {
if (valor == 6) {
menuPrincip.SetActive(false);
menuConfig.SetActive(false);
menuSoundOption.SetActive(false);
menuKeyConfig.SetActive(false);
menuScreenAdj.SetActive(true);
opcoesMenuScreen();
}
}
//Fechar o jogo caso a opçao Exit seja apertada.
if (habilitaMenu == 2) {
if (mainSelection == 5) {
var fadeIn = GameObject.Find("FadeCamada").GetComponent<FadeIn>();
fadeIn.enabled = true;
defaultOptionsConfig();
if (FadeIn.valor == 1) {
Application.Quit();
}
}
}
//Carrega a cena Creditos.
if (habilitaMenu == 2) {
if (mainSelection == 4) {
SceneManager.LoadScene("_Credits");
}
}
//Mantem o valor minimo de habilitaMenu em 1.
if (habilitaMenu == 0) {
habilitaMenu += 1;
}
menus = habilitaMenu;
trocaMenu();
opcaoDificuldade();
opcaoPlayer();
opcaoCreditos();
opcaoPadrao();
optionsRetornar();
}
public void opcoesMenuPrincipal() {
var imgMainSelect = GameObject.Find("MainSelectImage").GetComponent<RectTransform>();
//Navegar nas opçoes do Menu principal.
if (Input.GetKeyDown("down")) {
mainSelection += 1;
somMenuMain.Play();
}
if (mainSelection == 6) {
if (Input.GetKeyDown("down")) {
mainSelection -= 5;
}
}
if (Input.GetKeyDown("up")) {
mainSelection -= 1;
somMenuMain.Play();
}
if (mainSelection == 0) {
if (Input.GetKeyDown("up")) {
mainSelection += 5;
}
}
if (mainSelection == 1) {
imgMainSelect.localPosition = new Vector2(0, 67.0f);
}
if (mainSelection == 2) {
imgMainSelect.localPosition = new Vector2(0, 29.0f);
}
if (mainSelection == 3) {
imgMainSelect.localPosition = new Vector2(0, -8.999f);
}
if (mainSelection == 4) {
imgMainSelect.localPosition = new Vector2(0, -47.0f);
}
if (mainSelection == 5) {
imgMainSelect.localPosition = new Vector2(0, -84.999f);
}
}
public void opcoesMenuConfig() {
var imagemDific = GameObject.Find("DifficultImage").GetComponent<RectTransform>();
//Navegar nas opçoes do Menu Config.
if (Input.GetKeyDown("down")) {
valor += 1;
somMenuMain.Play();
}
if (Input.GetKeyDown("up")) {
valor -= 1;
somMenuMain.Play();
}
if (valor == 9) {
if (Input.GetKeyDown("down")) {
valor -= 8;
}
}
if (valor == 0) {
if (Input.GetKeyDown("up")) {
valor += 8;
}
}
if (valor == 1) {
imagemDific.localPosition = new Vector2(-53.4f, 103.5f);
}
if (valor == 2) {
imagemDific.localPosition = new Vector2(-53.4f, 69.5f);
}
if (valor == 3) {
imagemDific.localPosition = new Vector2(-53.4f, 35.7f);
}
if (valor == 4) {
imagemDific.localPosition = new Vector2(-53.4f, 2.2f);
}
if (valor == 5) {
imagemDific.localPosition = new Vector2(-53.4f, -31.5f);
}
if (valor == 6) {
imagemDific.localPosition = new Vector2(-53.4f, -64.98f);
}
if (valor == 7) {
imagemDific.localPosition = new Vector2(-53.4f, -98.7f);
}
if (valor == {
imagemDific.localPosition = new Vector2(2.050f, -132.5f);
}
}
public void opcoesMenuSound() {
var textBGM = GameObject.Find("BGMText").GetComponent<Text>();
var textSE = GameObject.Find("SEText").GetComponent<Text>();
var textSoundTest = GameObject.Find("SoundTestText").GetComponent<Text>();
var textDefault = GameObject.Find("DefaultText").GetComponent<Text>();
var textReturn = GameObject.Find("ReturnText").GetComponent<Text>();
//Navegar nas opçoes do Menu Sound Options.
if (Input.GetKeyDown("down")) {
soundSelections += 1;
somMenuMain.Play();
}
if (Input.GetKeyDown("up")) {
soundSelections -= 1;
somMenuMain.Play();
}
if (soundSelections == 6) {
if (Input.GetKeyDown("down")) {
soundSelections -= 5;
}
}
if (soundSelections == 0) {
if (Input.GetKeyDown("up")) {
soundSelections += 5;
}
}
if (soundSelections == 1) {
textBGM.color = new Color(0.3f, 0.8f, 0.8f);
textSE.color = new Color(1, 1, 1f);
textSoundTest.color = new Color(1, 1, 1);
textDefault.color = new Color(1, 1, 1);
textReturn.color = new Color(1, 1, 1);
}
if (soundSelections == 2) {
textBGM.color = new Color(1, 1, 1);
textSE.color = new Color(0.3f, 0.8f, 0.8f);
textSoundTest.color = new Color(1, 1, 1);
textDefault.color = new Color(1, 1, 1);
textReturn.color = new Color(1, 1, 1);
}
if (soundSelections == 3) {
textBGM.color = new Color(1, 1, 1);
textSE.color = new Color(1, 1, 1f);
textSoundTest.color = new Color(0.3f, 0.8f, 0.8f);
textDefault.color = new Color(1, 1, 1);
textReturn.color = new Color(1, 1, 1);
}
if (soundSelections == 4) {
textBGM.color = new Color(1, 1, 1);
textSE.color = new Color(1, 1, 1f);
textSoundTest.color = new Color(1, 1, 1);
textDefault.color = new Color(0.3f, 0.8f, 0.8f);
textReturn.color = new Color(1, 1, 1);
}
if (soundSelections == 5) {
textBGM.color = new Color(1, 1, 1);
textSE.color = new Color(1, 1, 1f);
textSoundTest.color = new Color(1, 1, 1);
textDefault.color = new Color(1, 1, 1);
textReturn.color = new Color(0.3f, 0.8f, 0.8f);
}
}
public void opcoesMenuKey() {
var textInput = GameObject.Find("InputText").GetComponent<Text>();
var textReturn2 = GameObject.Find("ReturnText2").GetComponent<Text>();
//Navegar nas opçoes do Menu Key Config.
if (Input.GetKeyDown("down")) {
keySelections += 1;
somMenuMain.Play();
}
if (Input.GetKeyDown("up")) {
keySelections -= 1;
somMenuMain.Play();
}
if (keySelections == 3) {
if (Input.GetKeyDown("down")) {
keySelections -= 2;
}
}
if (keySelections == 0) {
if (Input.GetKeyDown("up")) {
keySelections += 2;
}
}
if (keySelections == 1) {
textInput.color = new Color(0.3f, 0.8f, 0.8f);
textReturn2.color = new Color(1, 1, 1);
}
if (keySelections == 2) {
textInput.color = new Color(1, 1, 1);
textReturn2.color = new Color(0.3f, 0.8f, 0.8f);
}
}
public void opcoesMenuScreen() {
var textResolut = GameObject.Find("ResolutionText").GetComponent<Text>();
var textReturn3 = GameObject.Find("ReturnText3").GetComponent<Text>();
//Navegar nas opçoes do Menu Screen Adjust.
if (Input.GetKeyDown("down")) {
screenSelections += 1;
somMenuMain.Play();
}
if (Input.GetKeyDown("up")) {
screenSelections -= 1;
somMenuMain.Play();
}
if (screenSelections == 3) {
if (Input.GetKeyDown("down")) {
screenSelections -= 2;
}
}
if (screenSelections == 0) {
if (Input.GetKeyDown("up")) {
screenSelections += 2;
}
}
if (screenSelections == 1) {
textResolut.color = new Color(0.3f, 0.8f, 0.8f);
textReturn3.color = new Color(1, 1, 1);
}
if (screenSelections == 2) {
textResolut.color = new Color(1, 1, 1);
textReturn3.color = new Color(0.3f, 0.8f, 0.8f);
}
}
void opcaoDificuldade() {
var opcoesDific = GameObject.Find("DifficultOptions").GetComponent<Text>();
if (valor == 1) {
if (Input.GetKeyDown("right")) {
level += 1;
if (level == 4) {
level -= 1;
}
}
}
if (valor == 1) {
if (Input.GetKeyDown("left")) {
level -= 1;
if (level == 0) {
level += 1;
}
}
}
if (level == 1) {
opcoesDific.text = "Easy";
}
if (level == 2) {
opcoesDific.text = "Normal";
}
if (level == 3) {
opcoesDific.text = "Hard";
}
}
void opcaoPlayer() {
var opcoesPlayer = GameObject.Find("PlayerOptions").GetComponent<Text>();
if (valor == 2) {
if (Input.GetKeyDown("right")) {
player += 1;
if (player == 6) {
player -= 1;
}
}
}
if (valor == 2) {
if (Input.GetKeyDown("left")) {
player -= 1;
if (player == 0) {
player += 1;
}
}
}
if (player == 1) {
opcoesPlayer.text = "1";
}
if (player == 2) {
opcoesPlayer.text = "2";
}
if (player == 3) {
opcoesPlayer.text = "3";
}
if (player == 4) {
opcoesPlayer.text = "4";
}
if (player == 5) {
opcoesPlayer.text = "5";
}
}
void opcaoCreditos() {
var opcoesCredits = GameObject.Find("CreditsOptions").GetComponent<Text>();
if (valor == 3) {
if (Input.GetKeyDown("right")) {
credits += 1;
if (credits == 6) {
credits -= 1;
}
}
}
if (valor == 3) {
if (Input.GetKeyDown("left")) {
credits -= 1;
if (credits == 0) {
credits += 1;
}
}
}
if (credits == 1) {
opcoesCredits.text = "1";
}
if (credits == 2) {
opcoesCredits.text = "2";
}
if (credits == 3) {
opcoesCredits.text = "3";
}
if (credits == 4) {
opcoesCredits.text = "4";
}
if (credits == 5) {
opcoesCredits.text = "5";
}
}
void opcaoPadrao() {
if (valor == 7) {
if (Input.GetKeyDown("return")) {
level = 2;
player = 3;
credits = 3;
}
}
}
void optionsRetornar() {
if (valor == {
if (Input.GetKeyDown("return")) {
menuPrincip.SetActive(true); //Ativa o Painel Principal.
menuConfig.SetActive(false); //Desativa o Painel de Configurações.
habilitaMenu -= 1;
PlayerPrefs.SetInt("NivelSelecionado", level);
PlayerPrefs.SetInt("VidaSelecionada", player);
PlayerPrefs.SetInt("CreditoSelecionado", credits);
if (habilitaMenu == 2) {
habilitaMenu -= 1;
}
}
}
}
void valorPadraoMain() {
mainSelection = 2;
}
void valorPadraoConfig() {
valor = 1;
}
public void defaultOptionsConfig() {
level = 2;
player = 3;
credits = 3;
}
void valorPadraoSound() {
soundSelections = 1;
}
void valorPadraoKey() {
keySelections = 1;
}
void valorPadraoScreen() {
screenSelections = 1;
}
void trocaMenu() {
if (habilitaMenu == 3 && soundSelections == 5 || keySelections == 2 || screenSelections == 2) {
if (Input.GetKeyDown("return")) {
habilitaMenu -= 1;
valorPadraoSound();
valorPadraoKey();
valorPadraoScreen();
return;
}
}
//Trocar de menu.
if (habilitaMenu == 1 && mainSelection == 2 || mainSelection == 5 || mainSelection == 4 || mainSelection == 1) {
if (Input.GetKeyDown("return")) {
habilitaMenu += 1;
}
}
if (habilitaMenu == 2 && valor == 4 || valor == 5 || valor == 6) {
if (Input.GetKeyDown("return")) {
habilitaMenu += 1;
}
}
//Mantem o valor maximo de habilitaMenu em 3.
if (Input.GetKeyDown("return")) {
if (habilitaMenu == 4) {
habilitaMenu -= 1;
}
}
}
IEnumerator carregaJogo() {
yield return new WaitForSeconds(2.5f);
gameStart = true;
}
}
E aqui o script que abre o menu PAUSE, que me dá a opção de retomar o jogo ou voltar à cena Main:
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections;
public class GCPause : MonoBehaviour {
public GameObject menuPause;
public int value2 = 1;
public bool menuPauseActive = false;
void Update() {
if (Input.GetKeyDown("escape") && !menuPauseActive) {
menuPauseActive = true;
Invoke("AtivaPause", 0.1f);
AudioListener.volume = 0;
}
if (!menuPauseActive) {
PauseDefault();
}
pauseOptions();
botaoVoltar();
botaoMenuPrincipal();
}
void pauseOptions() {
//Selecionar as opçoes Sim e Nao atraves das teclas frente e tras.
if (menuPauseActive) {
if (Input.GetKeyDown("down")) {
value2 += 1;
}
if (Input.GetKeyDown("up")) {
value2 -= 1;
}
if (value2 == 3) {
if (Input.GetKeyDown("down")) {
value2 -= 2;
}
}
if (value2 == 0) {
if (Input.GetKeyDown("up")) {
value2 += 2;
}
}
if (value2 == 1) {
GameObject.Find("MainMenuText").GetComponent<Text>().color = new Color(0.3f, 0.8f, 0.8f);
}
else {
GameObject.Find("MainMenuText").GetComponent<Text>().color = new Color(1, 1, 1);
}
if (value2 == 2) {
GameObject.Find("BackText").GetComponent<Text>().color = new Color(0.3f, 0.8f, 0.8f);
}
else {
GameObject.Find("BackText").GetComponent<Text>().color = new Color(1, 1, 1);
}
}
}
public void botaoVoltar() {
if (value2 == 2) {
if (Input.GetKeyDown("return")) {
Time.timeScale = 1f;
menuPause.SetActive(false);
menuPauseActive = false;
AudioListener.volume = 1f;
}
}
}
public void botaoMenuPrincipal() {
if (value2 == 1) {
if (Input.GetKeyDown("return")) {
Time.timeScale = 1f;
SceneManager.LoadScene("Main");
GCMenuPrincipal.habilitaMenu = 1;
menuPauseActive = false;
GCMenuPrincipal.level = PlayerPrefs.GetInt("NivelSelecionado");
GCMenuPrincipal.player = PlayerPrefs.GetInt("VidaSelecionada");
GCMenuPrincipal.credits = PlayerPrefs.GetInt("CreditoSelecionado");
}
}
}
void AtivaPause() {
Time.timeScale = 0f;
menuPause.SetActive(true);
}
void PauseDefault() {
value2 = 1;
}
}
Conforme os scripts, onde está o erro?
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Problemas após trocar de cenas
Pessoal, consegui resolver o problema do audio, mas ainda continua falhando o escurecimento da tela quando seleciono a opção Game Start.
Mas essa falha só acontece quando retorno à cena do menu principal, após abrir o menu pause. Na primeira vez, quando clico no play para simular o jogo, esse fade está funcionando.
Queria saber por que não funciona depois numa segunda vez
Mas essa falha só acontece quando retorno à cena do menu principal, após abrir o menu pause. Na primeira vez, quando clico no play para simular o jogo, esse fade está funcionando.
Queria saber por que não funciona depois numa segunda vez
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Problemas após trocar de cenas
No momento que você da o play pela segunda vez, aparece um erro.
Poderia nos mostrar qual erro é este?
Poderia nos mostrar qual erro é este?
Re: Problemas após trocar de cenas
MarcosSchultz escreveu:No momento que você da o play pela segunda vez, aparece um erro.
Poderia nos mostrar qual erro é este?
Marcos na verdade não é quado dou o play pela segunda vez.
primeiro eu dou o play aí começa a simular o jogo, vou na opção Game Start, teclo ENTER e acontece o escurecimento da tela, é uma imagem UI dentro do canvas em que eu inseri uma camada preta (uma imagem toda preta).
aí começa o jogo na cena Level1. se eu apertar ESC para aparecer o menu Pause e escolher a opção Menu Principal, vou voltar para a cena Main.
Deixando o jogo ainda em simulação, se eu der ENTER de novo no Game Start a camada preta não dá mais o efeito fading.
e isso vai acontecendo mesmo eu voltando varias vezes para o menu principal.
não sei o que é.
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Problemas após trocar de cenas
Tem como zipar o projeto e mandar para eu ver o que pode ser?
Pelo que da a entender, algum script está perdendo a referência do objeto nas trocas de cena.
Pelo que da a entender, algum script está perdendo a referência do objeto nas trocas de cena.
Re: Problemas após trocar de cenas
Marcos por um descuido eu acabei perdendo a pasta do projeto desse jogo, então não vou poder de enviar esse projeto, mas pelo menos alguns scripts dele estavam salvos em outro lugar.
Mas eu descobri o problema, o erro no fade da tela preta estava em uma variavel que setei como static para ser acessada de outro script. depois que tirei o static para volta-la ao normal e fiz o codigo do outro script de uma forma diferente, esse erro corrigiu.
o audio era por conta do AudioListener, eu o retirei suspeitando dele e aí corrigiu.
Mas eu descobri o problema, o erro no fade da tela preta estava em uma variavel que setei como static para ser acessada de outro script. depois que tirei o static para volta-la ao normal e fiz o codigo do outro script de uma forma diferente, esse erro corrigiu.
o audio era por conta do AudioListener, eu o retirei suspeitando dele e aí corrigiu.
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Tópicos semelhantes
» Fade In para trocar de cenas
» Salvar dados do player ao trocar de cenas
» Unity 2018.2.17 - Cenas com problemas
» [RESOLVIDO] Trocar valor de variável apos X segundos que ativar o triggercollider
» [TUTORIAL] Evitar Sombras ULTRA escuras após trocar de cena
» Salvar dados do player ao trocar de cenas
» Unity 2018.2.17 - Cenas com problemas
» [RESOLVIDO] Trocar valor de variável apos X segundos que ativar o triggercollider
» [TUTORIAL] Evitar Sombras ULTRA escuras após trocar de cena
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos