Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

¿que es este error?

Iniciado por brok, Noviembre 21, 2015, 08:46:51 PM

Tema anterior - Siguiente tema
Que es este error y como puedo solucionarlo.MissingReferenceException: The object of type 'Transform' has been destro*** but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Transform.get_position () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineTransformBindings.gen.cs:20)
Player_ai+<idle>c__Iterator0.MoveNext () (at Assets/script/AI/Player_ai.cs:63) 
El error me sale eneste script el la linea " playerT.Translate(-Vector3.forward * sinkSpeed);". using UnityEngine;
using System.Collections;
public class ColisionPlayerAI : MonoBehaviour
{
    public float sinkSpeed = 0.5f;
    
    AudioSource GolpeSonido;
    Transform playerT;
    Ray GolpeRay;
    RaycastHit GolpeHit;    void Start()
    {
        playerT = GameObject.FindGameObjectWithTag("Enemigo").transform;
        GolpeSonido = GetComponentInParent<AudioSource>();
       
    }
    
        
    
    void OnTriggerEnter(Collider colision)
    {        GolpeRay.origin = transform.position;
        GolpeRay.direction = transform.forward;        if (Physics.Raycast(GolpeRay, out GolpeHit) && colision.gameObject.CompareTag("Player"))
            
        {
            
            vidaPlayer vidaplayer= GolpeHit.collider.GetComponent<vidaPlayer>();
            
            if (vidaplayer != null )
                
                vidaplayer.QuitarVidaPlayer(1, GolpeHit.point);
                GolpeSonido.Play();
                playerT.Translate(-Vector3.forward * sinkSpeed);
                Player.damaged = true;           
            
        }
    }  }

e probado poniendo la variable PlayerT en != null en una condicion pero me sale el como si no lo ubiera solucionado.MissingReferenceException: The object of type 'Transform' has been destro*** but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.

Se que hay que poner el script en NombreScript != null pero como lo hago estoy muy persdido ayudadme por fabor.

la traducción vendría siendo que destruistes el transform e intentas acceder a él. 

Eso lo sabia gracias
Me sale el error mientras estoy peleando con los enemigos que todos son los mismos prefab instanciados.

Lo he solucinado de una forma chapuza  creando enty vacio y le añadido el script ColisionPlayerAI y hacediendo por el script del player con estoColisionPlayerAI colisionAI;colisionAI = GameObject.FindGameObjectWithTag("Enemigo").GetComponentInChildren<ColisionPlayerAI>();y poniendo esto debajoif (colisionAI != null) { }Chapuza pero funciona y ahora me gustaria que alguien me exxplicase un metoso mas pro, Gracias,

¿Has probado a mirar qué se ejecuta siempre? Lo malo del sistema de hilos de Unity es que puede que algo se haga antes que otro algo... -O eso pienso, quizá me confunda-. En cualquier caso me doy cuenta que dices tener muchos enemigos iguales... ¿Pero cuál estás cogiendo? buscar por tag pienso que o te traerá una colección de enemigos o el primero... Luego parece que usas esa clase globalmente... Si le da más enemigos ¿no te daría problemas? m'''.¿por qué no pruebas a trabajar todo en un trigger o collision dentro del propio jugador sin variables globales que guarden enemigos? -Es una sugerencia, tal vez no te sirva...-(Tal vez no estoy entendiendo bien cómo haces tu scritp)Ánimo de todas formas.

El problema es es que el enemigo es un prefab y no puedo haceder a sus componentes, no se como prodia hacerlo ¿hay alguna forma?

Los prefabs son GameObjects, puedes acceder a sus componentes con GetComponent.

Ya lo hize y funciono gracias.

Etiquetas: