Добрый день, при запуске игры вылазит красная ошибка(скину ниже исходный код и саму ошибку). Прошу помочь, ибо в Visual Studio без ошибок, а Unity ругается. Заранее спасибо!
Ошибка - NullReferenceException: Object reference not set to an instance of an object
PokeyBallTest.ProgressBar.ProgressBar.OnLevelChanged (PokeyBallTest.Level level, System.Int32 levelNumber) (at Assets/Scripts/ProgressBar/ProgressBar.cs:41)
Код: ругается на строку _slider.maxValue = level.YEndLinePosition;
public class ProgressBar : MonoBehaviour
{
[SerializeField] private LevelManager levelManager;
[SerializeField] private PlayerController playerController;
[SerializeField] private TMP_Text currentLevelText;
[SerializeField] private TMP_Text nextLevelText;
private Slider _slider;
private int _nextLevelNumber;
//Булевая для проверки прошли ли мы максимально-возможное значение слайдера
private bool _isValueMax;
private void Start()
{
_slider = GetComponent<Slider>();
}
private void OnEnable()
{
//Подписки на события
levelManager.LevelChanged += OnLevelChanged;
playerController.YPositionChanged += PlayerYPositionChanged;
}
private void OnDisable()
{
//Подписки от событий
levelManager.LevelChanged -= OnLevelChanged;
playerController.YPositionChanged -= PlayerYPositionChanged;
}
private void OnLevelChanged(Level level, int levelNumber)
{
//Устанавливаем максимальные и минимальные значения слайдера
//на основании конечной позиции EnLine и стартовой позиции игрока
_slider.maxValue = level.YEndLinePosition;
_slider.minValue = playerController.StartingPosition.y;
_isValueMax = false;
//Устанавливаем текстовые значения уровней посредством индексов уровня, которые мы получили из LevelManager
++levelNumber;
_nextLevelNumber = levelNumber + 1;
currentLevelText.text = levelNumber.ToString();
nextLevelText.text = _nextLevelNumber.ToString();
}
private void PlayerYPositionChanged(float yPosition)
{
//Изменяем значение слайдера при изменении позиции игрока по оси y
_slider.value = yPosition;
//Проверяем перешли ли мы порог максимального значения
//и изменяем текстовое значение уровня на следующий
if (_slider.value >= _slider.maxValue && !_isValueMax)
{
currentLevelText.text = _nextLevelNumber.ToString();
_isValueMax = true;
}
}
}