Unity travando na hora do Play
3 participantes
Página 1 de 1
Unity travando na hora do Play
Boa tarde gente. Então, estou fazendo um jogo de com objetivo de fazer reciclagem. Nisso, eu fiz um script que até a primeira parte estava funcionando de boas. Porém, eu tive que botar um while no meu código, pois preciso que execute um loop até que a função seja falsa. E nisso, quando eu salvei e fui dar play, meu unity comecou a travar. Alguém poderia me ajudar ? Vou deixar o código aqui embaixo em duas partes. A primeira seria o código sem o unity travar e o segundo é com ele travando.
Código 2 (o que trava) \/
Código 1 (o que não trava) \/
Código 2 (o que trava) \/
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Coletar : MonoBehaviour
{
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
int organico;
int vidro;
int papel;
int metal;
int plastico;
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
void Start()
{
organico = 0;
vidro = 0;
papel = 0;
metal = 0;
plastico = 0;
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
void Update()
{
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
private void OnTriggerEnter2D(Collider2D collision2D)
{
if (collision2D.gameObject.CompareTag("organico"))
{
int organico = 1;
Destroy(collision2D.gameObject);
while (organico == 1)
{
if (collision2D.gameObject.CompareTag("plastico"))
{
int plastico = 0;
GetComponent<Collider>().enabled = false;
// DontDestroyOnLoad(collision2D.gameObject);
}
}
}
if (collision2D.gameObject.CompareTag("vidro"))
{
int vidro = 1;
Destroy(collision2D.gameObject);
}
if (collision2D.gameObject.CompareTag("papel"))
{
int papel = 1;
Destroy(collision2D.gameObject);
}
if (collision2D.gameObject.CompareTag("metal"))
{
int metal = 1;
Destroy(collision2D.gameObject);
}
if (collision2D.gameObject.CompareTag("plastico"))
{
int plastico = 1;
Destroy(collision2D.gameObject);
}
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
} // class
Código 1 (o que não trava) \/
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Coletar : MonoBehaviour
{
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
int organico;
int vidro;
int papel;
int metal;
int plastico;
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
void Start()
{
organico = 0;
vidro = 0;
papel = 0;
metal = 0;
plastico = 0;
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
void Update()
{
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
private void OnTriggerEnter2D(Collider2D collision2D)
{
if (collision2D.gameObject.CompareTag("organico"))
{
int organico = 1;
Destroy(collision2D.gameObject);
}
}
if (collision2D.gameObject.CompareTag("vidro"))
{
int vidro = 1;
Destroy(collision2D.gameObject);
}
if (collision2D.gameObject.CompareTag("papel"))
{
int papel = 1;
Destroy(collision2D.gameObject);
}
if (collision2D.gameObject.CompareTag("metal"))
{
int metal = 1;
Destroy(collision2D.gameObject);
}
if (collision2D.gameObject.CompareTag("plastico"))
{
int plastico = 1;
Destroy(collision2D.gameObject);
}
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
} // class
gersoneson- Membro
- PONTOS : 1919
REPUTAÇÃO : 6
Respeito as regras :
Re: Unity travando na hora do Play
Creio eu que se vc tiver um loop e esse loop nao parar de executar ele ira travar msm pois seria um loop infinito(se o loop tiver errado), se a verificação tiver certa ele nao causara loop infinito e sim um loop até que ele retorne o desejado, se eu nao me engando deveria ter um comando Break para parar um loop para nao dar problema, acho tambem que existe outra maneiras de verificar algo, existe tambem o For que eu uso mas vai da sua necessidade dae,
pode ser outras coisas tambem.
Espero ter ajudado.
pode ser outras coisas tambem.
Espero ter ajudado.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: Unity travando na hora do Play
As vezes pode ser seu pc tambem, o meu trava quando dou play mas quando testo no celular nao trava nada e build pra pc tambem nao, pois executar um jogo dentro da Unity é diferente de executar fora, a Unity força o computador para acho que renderizar o projeto.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: Unity travando na hora do Play
Acho que não precisa manter esse laço while
Só vc trocar o while por 'if' que funciona
sempre que a variável 'organico' ficar em 1, vai acontecer o que está dentro do bloco.
com while vai ficar travando mesmo porque o loop está infinito, não tem nenhuma condição de quebra pra interromper o laço.
while tem que saber aplicar pra evitar esses travamentos
Só vc trocar o while por 'if' que funciona
- Código:
if (collision2D.gameObject.CompareTag("organico")) {
int organico = 1;
Destroy(collision2D.gameObject);
if (organico == 1) {
if (collision2D.gameObject.CompareTag("plastico")) {
int plastico = 0;
GetComponent<Collider>().enabled = false;
// DontDestroyOnLoad(collision2D.gameObject);
}
}
}
sempre que a variável 'organico' ficar em 1, vai acontecer o que está dentro do bloco.
com while vai ficar travando mesmo porque o loop está infinito, não tem nenhuma condição de quebra pra interromper o laço.
while tem que saber aplicar pra evitar esses travamentos
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Unity travando na hora do Play
Era isso mesmo amigo. Eu consegui resolver. Obrigadão1poyser escreveu:As vezes pode ser seu pc tambem, o meu trava quando dou play mas quando testo no celular nao trava nada e build pra pc tambem nao, pois executar um jogo dentro da Unity é diferente de executar fora, a Unity força o computador para acho que renderizar o projeto.
gersoneson- Membro
- PONTOS : 1919
REPUTAÇÃO : 6
Respeito as regras :
Re: Unity travando na hora do Play
Valeu amigo!! Eu utilizei um método bem parecido com o seu para resolver meu bug. Muito obrigado mesmo! Vou deixar abaixo o que utilizei para que possa ajudar futuras dúvidas.Flávio escreveu:Acho que não precisa manter esse laço while
Só vc trocar o while por 'if' que funciona
- Código:
if (collision2D.gameObject.CompareTag("organico")) {
int organico = 1;
Destroy(collision2D.gameObject);
if (organico == 1) {
if (collision2D.gameObject.CompareTag("plastico")) {
int plastico = 0;
GetComponent<Collider>().enabled = false;
// DontDestroyOnLoad(collision2D.gameObject);
}
}
}
sempre que a variável 'organico' ficar em 1, vai acontecer o que está dentro do bloco.
com while vai ficar travando mesmo porque o loop está infinito, não tem nenhuma condição de quebra pra interromper o laço.
while tem que saber aplicar pra evitar esses travamentos
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Coletar : MonoBehaviour
{
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
public bool lixo;
public bool organico;
public bool vidro;
public bool papel;
public bool metal;
public bool plastico;
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
void Start()
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
void Update()
{
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////
// LIXEIRA \\
private void OnCollisionEnter2D(Collision2D collision2D)
{
if (collision2D.gameObject.CompareTag("lixo-organico"))
{
if (lixo)
{
if (organico)
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
} else
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}
}
}
if (collision2D.gameObject.CompareTag("lixo-plastico"))
{
if (lixo)
{
if (plastico)
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}
else
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}
}
}
if (collision2D.gameObject.CompareTag("lixo-vidro"))
{
if (lixo)
{
if (vidro)
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}else
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}
}
}
if (collision2D.gameObject.CompareTag("lixo-papel"))
{
if (lixo)
{
if (papel)
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}else
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}
}
}
if (collision2D.gameObject.CompareTag("lixo-metal"))
{
if (lixo)
{
if (metal)
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}else
{
lixo = false;
organico = false;
vidro = false;
papel = false;
metal = false;
plastico = false;
}
}
}
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////
// LIXO \\
private void OnTriggerEnter2D(Collider2D collision2D)
{
if (collision2D.gameObject.CompareTag("organico"))
{
if (!lixo)
{
lixo = true;
organico = true;
Destroy(collision2D.gameObject);
}
}
if (collision2D.gameObject.CompareTag("plastico"))
{
if (!lixo)
{
lixo = true;
plastico = true;
Destroy(collision2D.gameObject);
}
}
if (collision2D.gameObject.CompareTag("vidro"))
{
if (!lixo)
{
lixo = true;
vidro = true;
Destroy(collision2D.gameObject);
}
}
if (collision2D.gameObject.CompareTag("papel"))
{
if (!lixo)
{
lixo = true;
papel = true;
Destroy(collision2D.gameObject);
}
}
if (collision2D.gameObject.CompareTag("metal"))
{
if (!lixo)
{
lixo = true;
metal = true;
Destroy(collision2D.gameObject);
}
}
}
///////////////////// ///////////////////// ///////////////////// ///////////////////// ///////////////////// /////////////////////
} // class
gersoneson- Membro
- PONTOS : 1919
REPUTAÇÃO : 6
Respeito as regras :
Tópicos semelhantes
» Meu Jogo ta Travando - Quiz Unity 2D
» Duvida na hora da POSTAGEM na PLAY STORE
» Unity Travando
» Unity - Renderizção com Câmera Jogo Lento e travando. Alguém pfv?!
» Unity travando a cada 1-2 segundos
» Duvida na hora da POSTAGEM na PLAY STORE
» Unity Travando
» Unity - Renderizção com Câmera Jogo Lento e travando. Alguém pfv?!
» Unity travando a cada 1-2 segundos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos