[TUTORIAL] Como carregar uma cena em segundo plano?
Página 1 de 1 • Compartilhe •
[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- Avançado
- PONTOS : 1075
REPUTAÇÃO : 35
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!
dstaroski- Instrutor
-
PONTOS : 4075
REPUTAÇÃO : 1051
Idade : 29
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Asp .NET, HTML, CSS, Unity 3D
Respeito as regras :
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- Avançado
- PONTOS : 1075
REPUTAÇÃO : 35
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- Avançado
- PONTOS : 1075
REPUTAÇÃO : 35
Respeito as regras :
Re: [TUTORIAL] Como carregar uma cena em segundo plano?
muito bom vai ser bem util
Dom3000- Programador
-
PONTOS : 2434
REPUTAÇÃO : 223
Idade : 23
Áreas de atuação : canal https://www.youtube.com/watch?v=yvmQEJUfbhQ
Page: https://www.facebook.com/BatlesofWorlds/
Respeito as regras :

» [TUTORIAL] Como divulgar seu fórum
» [Willy Tutorial] Como fazer um filho!
» Como fazer para deixar mice carregar mais rápido
» Sonic 3D
» [Tutorial] Como tirar logomarca
» [Willy Tutorial] Como fazer um filho!
» Como fazer para deixar mice carregar mais rápido
» Sonic 3D
» [Tutorial] Como tirar logomarca
Página 1 de 1
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum