Как я могу исправить ошибку «Объект типа GameObject был уничтожен, но вы все еще пытаетесь получить к нему доступ». Единство - PullRequest
1 голос
/ 14 июля 2020

У меня 2 монстра и 1 игрок. когда игроки стреляют, я получаю эту ошибку, и они перестают стрелять. У меня такой же код для игроков, но игроки могут продолжать стрелять. Я думаю, что проблема в "уничтожить", но я не могу найти решение введите описание изображения здесь

    public class SpawnBulletController : MonoBehaviour
{
    public GameObject bullet;
    public float interval = 1F;

    // Use this for initialization
    void Start () {
        
            InvokeRepeating("ShootBullet", interval, interval);
        
        
    }

    void ShootBullet()
    {
        GameObject g = Instantiate(bullet, transform.position, Quaternion.identity);
        
    }
    

}

    public class BorderCollision : MonoBehaviour
{

    private void OnCollisionEnter2D(Collision2D other)
    {
        
        if (other.gameObject.tag != "Player")
            Destroy(other.gameObject);
    }
}

1 Ответ

0 голосов
/ 14 июля 2020

Когда ваш коллайдер попадает в любой GameObject , у которого нет тега «Player», GameObject будет уничтожен, это неправильно.

you следует попробовать

private void OnCollisionEnter2D(Collision2D collider)
{
    
    if (collider.gameObject.tag == "Monster")
        Destroy(collider.gameObject);
}

И если вы хотите уничтожить больше с тем же кодом, но не с тем же тегом, вы должны попробовать.

private void OnCollisionEnter2D(Collision2D collider)
{
    
    if (collider.gameObject.tag == "Monster" || collider.gameObject.tag == "Monster2")
        Destroy(collider.gameObject);
}
...