ERRO POR CONTA DE REFERÊNCIAS APÓS DESTRUIR GAMEOBJECT
3 participantes
Página 1 de 1
ERRO POR CONTA DE REFERÊNCIAS APÓS DESTRUIR GAMEOBJECT
Estou criando um jogo onde estou tendo vários erros por conta de referências, por exemplo tenho um código de inimigo seguir jogador onde tem uma referência a um dos códigos do jogador, ai quando o jogador morre (o GameObject é destruído) meu jogo para por conta de não ter mais esse código para acessar. O mesmo vale para alguns outros códigos do meu jogo nos quais eu acesso os códigos que estão no jogador ou até o prório GameObject do jogador. Como posso fazer para evitar isso?
Nimue- Iniciante
- PONTOS : 855
REPUTAÇÃO : 5
Respeito as regras :
Re: ERRO POR CONTA DE REFERÊNCIAS APÓS DESTRUIR GAMEOBJECT
Verifique se o objeto é nulo com o operador de nulidade.
Vamos supor que eu tenha um método que precise de algo do objeto "player", e caso ele for diferente de nulo (ou seja, esteja na cena) eu faço o quero fazer, se não, eu só retorno do método, sem problemas:
Vamos supor que eu tenha um método que precise de algo do objeto "player", e caso ele for diferente de nulo (ou seja, esteja na cena) eu faço o quero fazer, se não, eu só retorno do método, sem problemas:
- Código:
void Example(){
if (player != null){
// Faça algo
} else return;
}
Re: ERRO POR CONTA DE REFERÊNCIAS APÓS DESTRUIR GAMEOBJECT
Basta fazer uma Verificação antes se o GameObject existe.Nimue escreveu:Estou criando um jogo onde estou tendo vários erros por conta de referências, por exemplo tenho um código de inimigo seguir jogador onde tem uma referência a um dos códigos do jogador, ai quando o jogador morre (o GameObject é destruído) meu jogo para por conta de não ter mais esse código para acessar. O mesmo vale para alguns outros códigos do meu jogo nos quais eu acesso os códigos que estão no jogador ou até o próprio GameObject do jogador. Como posso fazer para evitar isso?
- Código:
GameObject Obj;
if(Obj)
{
//existe
} else
{
//não existe (é null ou foi destruído)
}
Aliás, se esses GameObjects que tu vive destruindo forem instanciados frequentemente, talvez valha a pena usar Pooling em vez de ficar instanciando e destruindo sempre.
e estou curioso quanto essa sua AI, por que ela acessa um script do player ?
Re: ERRO POR CONTA DE REFERÊNCIAS APÓS DESTRUIR GAMEOBJECT
Valeu ai, funcionou.dutrabr100 escreveu:Basta fazer uma Verificação antes se o GameObject existe.Nimue escreveu:Estou criando um jogo onde estou tendo vários erros por conta de referências, por exemplo tenho um código de inimigo seguir jogador onde tem uma referência a um dos códigos do jogador, ai quando o jogador morre (o GameObject é destruído) meu jogo para por conta de não ter mais esse código para acessar. O mesmo vale para alguns outros códigos do meu jogo nos quais eu acesso os códigos que estão no jogador ou até o próprio GameObject do jogador. Como posso fazer para evitar isso?
- Código:
GameObject Obj;
if(Obj)
{
//existe
} else
{
//não existe (é null ou foi destruído)
}
Aliás, se esses GameObjects que tu vive destruindo forem instanciados frequentemente, talvez valha a pena usar Pooling em vez de ficar instanciando e destruindo sempre.
e estou curioso quanto essa sua AI, por que ela acessa um script do player ?
Sobre a AI, eu não acesso o o script é o GameObject msm (agora q vi que coloquei errado na outra mensagem), faço isso pra acessar a posição do player em relação ao meu inimigo, determinar se esta proximo pq se estiver o inimigo passa a segui-lo.
Nimue- Iniciante
- PONTOS : 855
REPUTAÇÃO : 5
Respeito as regras :
Re: ERRO POR CONTA DE REFERÊNCIAS APÓS DESTRUIR GAMEOBJECT
É possível fazer essa mesma AI, sem ter uma referencia "direta" ao player no script da AI.Nimue escreveu:Valeu ai, funcionou.dutrabr100 escreveu:Basta fazer uma Verificação antes se o GameObject existe.Nimue escreveu:Estou criando um jogo onde estou tendo vários erros por conta de referências, por exemplo tenho um código de inimigo seguir jogador onde tem uma referência a um dos códigos do jogador, ai quando o jogador morre (o GameObject é destruído) meu jogo para por conta de não ter mais esse código para acessar. O mesmo vale para alguns outros códigos do meu jogo nos quais eu acesso os códigos que estão no jogador ou até o próprio GameObject do jogador. Como posso fazer para evitar isso?
- Código:
GameObject Obj;
if(Obj)
{
//existe
} else
{
//não existe (é null ou foi destruído)
}
Aliás, se esses GameObjects que tu vive destruindo forem instanciados frequentemente, talvez valha a pena usar Pooling em vez de ficar instanciando e destruindo sempre.
e estou curioso quanto essa sua AI, por que ela acessa um script do player ?
Sobre a AI, eu não acesso o o script é o GameObject msm (agora q vi que coloquei errado na outra mensagem), faço isso pra acessar a posição do player em relação ao meu inimigo, determinar se esta proximo pq se estiver o inimigo passa a segui-lo.
Usando esse método aqui: Physics.OverlapSphere
Ele é basicamente como se houvesse uma esfera ao redor do GameObject capaz de detectar quais gameobjects (desde que tenham colliders neles) estão dentro.
e dá para restringir eles a layers da sua escolha. (bem útil caso tenha mais de um inimigo que essa AI tenha que detectar)

» [DUVIDA] Como destruir um GameObject (cubo etc...) sem destruir seus "afilhados"
» Dificuldades em destruir ou desativar GameObject...
» Destruir um Objeto após terminar a Animação
» MENSAGEM APARECER NA TELA APÓS DESTRUIR UM OBJETO
» (Ajuda) Erro public GameObject
» Dificuldades em destruir ou desativar GameObject...
» Destruir um Objeto após terminar a Animação
» MENSAGEM APARECER NA TELA APÓS DESTRUIR UM OBJETO
» (Ajuda) Erro public GameObject
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos