[TUTORIAL] Como carregar uma cena em segundo plano?
+2
dstaroski
lesgoy
6 participantes
Página 1 de 1
[TUTORIAL] Como carregar uma cena em segundo plano?
É algo simples mas que pode ajudar muita gente :
Carregar uma cena em segundo plano enquanto a atual esta sendo executada , após carregada a cena NÃO VAI AUTOMATICAMENTE , ela espera um comando e ai sim carrega.
Primeiro passo :
importar o UnityEngine.SceneManagement (import em javaScript , e using em C#);
Depois você vai precisar de uma variável do tipo AsyncOperation.
ex :
var asyncLoad : AsyncOperation;(tanto faz o nome)
Agora na função start faça sua variável asyncLoad receber a cena que irá ser carregada
asyncLoad = SceneManager.LoadSceneAsync("Nivel3");
asyncLoad.allowSceneActivation = false;
Porque definir allowSceneActivation como false? Quando esta propriedade esta como falsa , o carregamento é feito e pausado em 0.9 , se você deixa marcado como verdadeiro(padrão) , ela carrega sim em segundo plano , mas ao terminar ela vai direto sem esperar nem mais 1 segundo.
Agora quando quiser ir para sua cena , basta digitar :
asyncLoad.allowSceneActivation = true;
Desta forma ele vai "despausar" o carregamento e ir para a sua cena.
Texto.text = "O carregamento terminou , pressione 'c' para continuar";
if(Input.GetKeyDown("c")){
asyncLoad.allowSceneActivation = true;
}
Detalhe : Se você quer usar o allowSceneActivation , e que o jogo só passe para a próxima cena quando o usuário apertar um botão , ou quando uma condição verdadeira os comandos :
asyncLoad = SceneManager.LoadSceneAsync("Nivel3");
asyncLoad.allowSceneActivation = false;
Devem obrigatoriamente estar na função Start , caso contrário quando você definir o allowSceneActivation como true , não vai acontecer nada.
Mas caso você queira apenas que ele carregue em segundo plano , e quando acabar vá direto para a próxima cena, você por na função update mesmo.
Este tutorial foi mais para mostrar como carregar a cena em segundo plano e deixa-la armazenada .
Espero que tenha ajudado!
Carregar uma cena em segundo plano enquanto a atual esta sendo executada , após carregada a cena NÃO VAI AUTOMATICAMENTE , ela espera um comando e ai sim carrega.
Primeiro passo :
importar o UnityEngine.SceneManagement (import em javaScript , e using em C#);
Depois você vai precisar de uma variável do tipo AsyncOperation.
ex :
var asyncLoad : AsyncOperation;(tanto faz o nome)
Agora na função start faça sua variável asyncLoad receber a cena que irá ser carregada
asyncLoad = SceneManager.LoadSceneAsync("Nivel3");
asyncLoad.allowSceneActivation = false;
Porque definir allowSceneActivation como false? Quando esta propriedade esta como falsa , o carregamento é feito e pausado em 0.9 , se você deixa marcado como verdadeiro(padrão) , ela carrega sim em segundo plano , mas ao terminar ela vai direto sem esperar nem mais 1 segundo.
Agora quando quiser ir para sua cena , basta digitar :
asyncLoad.allowSceneActivation = true;
Desta forma ele vai "despausar" o carregamento e ir para a sua cena.
Texto.text = "O carregamento terminou , pressione 'c' para continuar";
if(Input.GetKeyDown("c")){
asyncLoad.allowSceneActivation = true;
}
Detalhe : Se você quer usar o allowSceneActivation , e que o jogo só passe para a próxima cena quando o usuário apertar um botão , ou quando uma condição verdadeira os comandos :
asyncLoad = SceneManager.LoadSceneAsync("Nivel3");
asyncLoad.allowSceneActivation = false;
Devem obrigatoriamente estar na função Start , caso contrário quando você definir o allowSceneActivation como true , não vai acontecer nada.
Mas caso você queira apenas que ele carregue em segundo plano , e quando acabar vá direto para a próxima cena, você por na função update mesmo.
Este tutorial foi mais para mostrar como carregar a cena em segundo plano e deixa-la armazenada .
Espero que tenha ajudado!
lesgoy- Mestre
- PONTOS : 3488
REPUTAÇÃO : 49
Respeito as regras :
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
Parabéns pela iniciativa cara! acredito que seria mais legal se você coloca-se os scripts dentro do botão "Script" do editor, fica mais didático.lesgoy escreveu:É algo simples mas que pode ajudar muita gente :
Carregar uma cena em segundo plano enquanto a atual esta sendo executada , após carregada a cena NÃO VAI AUTOMATICAMENTE , ela espera um comando e ai sim carrega.
Primeiro passo :
importar o UnityEngine.SceneManagement (import em javaScript , e using em C#);
Depois você vai precisar de uma variável do tipo AsyncOperation.
ex :
var asyncLoad : AsyncOperation;(tanto faz o nome)
Agora na função start faça sua variável asyncLoad receber a cena que irá ser carregada
asyncLoad = SceneManager.LoadSceneAsync("Nivel3");
asyncLoad.allowSceneActivation = false;
Porque definir allowSceneActivation como false? Quando esta propriedade esta como falsa , o carregamento é feito e pausado em 0.9 , se você deixa marcado como verdadeiro(padrão) , ela carrega sim em segundo plano , mas ao terminar ela vai direto sem esperar nem mais 1 segundo.
Agora quando quiser ir para sua cena , basta digitar :
asyncLoad.allowSceneActivation = true;
Desta forma ele vai "despausar" o carregamento e ir para a sua cena.
Texto.text = "O carregamento terminou , pressione 'c' para continuar";
if(Input.GetKeyDown("c")){
asyncLoad.allowSceneActivation = true;
}
Detalhe : Se você quer usar o allowSceneActivation , e que o jogo só passe para a próxima cena quando o usuário apertar um botão , ou quando uma condição verdadeira os comandos :
asyncLoad = SceneManager.LoadSceneAsync("Nivel3");
asyncLoad.allowSceneActivation = false;
Devem obrigatoriamente estar na função Start , caso contrário quando você definir o allowSceneActivation como true , não vai acontecer nada.
Mas caso você queira apenas que ele carregue em segundo plano , e quando acabar vá direto para a próxima cena, você por na função update mesmo.
Este tutorial foi mais para mostrar como carregar a cena em segundo plano e deixa-la armazenada .
Espero que tenha ajudado!
Abraço!
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
Entendi então aqui está :
- Código:
#pragma strict
import UnityEngine.UI;
import UnityEngine.SceneManagement;
var asyncLoad : AsyncOperation;
var Texto : Text;
function Start () {
asyncLoad = SceneManager.LoadSceneAsync("(Sua Cena)");
asyncLoad.allowSceneActivation = false;
}
function Update () {
/*ATENÇÃO ! Isto não é uma barra de loading ou algo do tipo,é apenas uma mensagem informando que a cena está pronta
para ser jogada e que ele pode começar a jogar ao apertar a tecla c.
Desta forma pode fazer uma cena em que você fica brincando enquanto o jogo carrega (como em jogos
do FIFA que você fica treinando e depois aperta start a hora que quiser para começar a jogar)*/
Texto.text= "Carregamento Completo , pressione 'c' para continuar!";
if(Input.GetKeyDown("c")){
asyncLoad.allowSceneActivation = true;
}
}
lesgoy- Mestre
- PONTOS : 3488
REPUTAÇÃO : 49
Respeito as regras :
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
Gente, acabei de testar , e ele não funciona somente na função start.
Oque acontece é que ele deve ser chamado apenas UMA vez.Se estiver na função update ele começa carregar várias cenas e nada acontece.
Portanto não precisa obrigatoriamente atribuir a cena ao async e marcar o allowSceneActivation como true na função start.Pode ser na update , contanto que seja chamado apenas uma vez.
Ex :
Oque acontece é que ele deve ser chamado apenas UMA vez.Se estiver na função update ele começa carregar várias cenas e nada acontece.
Portanto não precisa obrigatoriamente atribuir a cena ao async e marcar o allowSceneActivation como true na função start.Pode ser na update , contanto que seja chamado apenas uma vez.
Ex :
- Código:
if(Input.GetKeyDown("c")){
asyncLoad = SceneManager.LoadSceneAsync("Nivel1");
asyncLoad.allowSceneActivation = false;
}
if(Input.GetKeyDown("g"))//(Go)
{
asyncLoad.allowSceneActivation = true;
}
lesgoy- Mestre
- PONTOS : 3488
REPUTAÇÃO : 49
Respeito as regras :
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
Olá pessoal! Primeiramente me desculpem por ressuscitar um necropost, mas achei este tópico como relevante em minha busca.
Também achei muito didático a forma que foi descrita. talvez a melhor descrição que eu achei...
Dito isto, vem minha dúvida.
Não consigo fazer meu allowSceneActivation funcionar.
Seguindo exatamente a forma como foi descrita, o Load da cena acontece ignorando o meu "false", É como se não existisse o allowSceneActivation.
Hoje em 2021, na documentação da Unity ele usa uma co-rotina, também;em tentei assim, mas não funcionou... Queria saber se o processo ainda é o mesmo e se estou esquecendo de algo.
Detalhe, estou testando o allowSceneActivation no Editor, então eu espero que se está em "false" ele não deveria carregar a próxima cena até eu setar para "true" correto?
Obrigado
Também achei muito didático a forma que foi descrita. talvez a melhor descrição que eu achei...
Dito isto, vem minha dúvida.
Não consigo fazer meu allowSceneActivation funcionar.
Seguindo exatamente a forma como foi descrita, o Load da cena acontece ignorando o meu "false", É como se não existisse o allowSceneActivation.
Hoje em 2021, na documentação da Unity ele usa uma co-rotina, também;em tentei assim, mas não funcionou... Queria saber se o processo ainda é o mesmo e se estou esquecendo de algo.
Detalhe, estou testando o allowSceneActivation no Editor, então eu espero que se está em "false" ele não deveria carregar a próxima cena até eu setar para "true" correto?
Obrigado
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
Qual versão de Unity você utiliza?
Aliás, isso é um bug conhecido da Unity:
https://answers.unity.com/questions/1314424/asyncoperationallowsceneactivation-seems-to-be-ign.html
https://issuetracker.unity3d.com/issues/loadsceneasync-allowsceneactivation-flag-is-ignored-in-awake?_ga=2.241434438.553973951.1610804216-1956256273.1607637473
Tente utilizar as soluções dadas por nossos amigos nos posts acima
Aliás, isso é um bug conhecido da Unity:
https://answers.unity.com/questions/1314424/asyncoperationallowsceneactivation-seems-to-be-ign.html
https://issuetracker.unity3d.com/issues/loadsceneasync-allowsceneactivation-flag-is-ignored-in-awake?_ga=2.241434438.553973951.1610804216-1956256273.1607637473
Tente utilizar as soluções dadas por nossos amigos nos posts acima
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
Já tem um tempo que não uso o Unity, mas ja tentou colocar o comando na função Update? Lembrando que é melhor chamá-lo apenas uma vez, pode fazer isso com uma variável por exemplo.amoraleite escreveu:Olá pessoal! Primeiramente me desculpem por ressuscitar um necropost, mas achei este tópico como relevante em minha busca.
Também achei muito didático a forma que foi descrita. talvez a melhor descrição que eu achei...
Dito isto, vem minha dúvida.
Não consigo fazer meu allowSceneActivation funcionar.
Seguindo exatamente a forma como foi descrita, o Load da cena acontece ignorando o meu "false", É como se não existisse o allowSceneActivation.
Hoje em 2021, na documentação da Unity ele usa uma co-rotina, também;em tentei assim, mas não funcionou... Queria saber se o processo ainda é o mesmo e se estou esquecendo de algo.
Detalhe, estou testando o allowSceneActivation no Editor, então eu espero que se está em "false" ele não deveria carregar a próxima cena até eu setar para "true" correto?
Obrigado
- Código:
if(StartCarregamento == false)
{
(Comando para carregar a cena)
StartCarregamento = true;
}
lesgoy- Mestre
- PONTOS : 3488
REPUTAÇÃO : 49
Respeito as regras :
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
Obrigado NKKF!NKKF escreveu:
Aliás, isso é um bug conhecido da Unity:
É um bug conhecido mesmo. E a solução do seu link funcionou para mim.
colocando o yield return new WaitForSeconds(0.1f); no inicio.
Obrigado Lesgoy!
Vou usar sua sugestão em outras partes também!
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
funcionou aqui, vlw chapa
Franttyck- Iniciante
- PONTOS : 1692
REPUTAÇÃO : 5
Idade : 26
Áreas de atuação : Programador de games com Unity
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] CARREGAR CENA APÓS UM TEMPO UNITY 4.7
» Como fazer o onTriggerEnter carregar uma cena?
» Como carregar uma cena através de image target
» [DUVIDA] SELECIONAR APP EM SEGUNDO PLANO NO CELULAR
» Como faço pra carregar os itens de uma Cena Para outra?
» Como fazer o onTriggerEnter carregar uma cena?
» Como carregar uma cena através de image target
» [DUVIDA] SELECIONAR APP EM SEGUNDO PLANO NO CELULAR
» Como faço pra carregar os itens de uma Cena Para outra?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos