Как исправить ошибку с счетчиком врагов?

Здравствуйте, есть условие что когда игрок уничтожает 30 врагов то текст меняется на "Пройдено". Но когда значение больше 30 то выскакивает ошибка и вылетает игра.
6289228b581d2354655773.png
NullReferenceException: Object reference not set to an instance of an object
EnemyControl.OnTriggerEnter2D (UnityEngine.Collider2D col) (at Assets/Script/EnemyControl.cs:56)

Код счетчика Kill
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;

public class QuestionOneLvl : MonoBehaviour
{
    Text KillUIText;
    public GameObject TextWork;

    public GameObject TextQ;

    private int kill;

    public int Kill
    {
        get
        {
            return this.kill;
        }
        set
        {
            this.kill = value;
            UpdateKillTextUI();
        }
    }
    private void Start()
    {
        
        KillUIText = GetComponent<Text>();
    }

    private void Update()
    {
        KillEnemy();
    }

    void UpdateKillTextUI()
    {
        string killStr = string.Format("{0:0}", kill);
        KillUIText.text = killStr;
    }
    //Вот самое условие
    private void KillEnemy()
    {
        if (Kill == 30)
        {
           
            TextQ.SetActive(false);
            TextWork.SetActive(true);
            return;
        }
    }



}


Строку ошибки обозначил 56 строка "EnemyControl"
private void OnTriggerEnter2D(Collider2D col)
    {
        //Обнаружить столкновение вражеского корабля с кораблем игрока или с пулей игрока
        if ((col.tag == "PlayerShipTag") || (col.tag == "PlayerBulletTag"))
        {
            PlayExplosion();

            //Добавить 100 очков в score
            scoreUITextGO.GetComponent<GameScore>().Score += 50;
            //Добавить +1 к Kill
            KillUIText.GetComponent<QuestionOneLvl>().Kill += 1; // 56 строка из консоли

            //Удалить врага
            Destroy (gameObject);
        }
    }
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
KillUIText.GetComponent<QuestionOneLvl>().Kill
У тебя в двух местах может быть Null, выясни в каком.
KillUIText ?
GetComponent ?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы