Обработка NullReferenceException
Понимаю, что ошибка состоит в том что объект к которому обращаюсь = null
, но в упор не вижу в чем проблема. Данный скрипт используется 2 объектами. Консоль выдает 4 ошибки, т.е. по 2 на объект. Все в строке 42 ( if (Vector2.Distance(transform.position, StartPoint.position) < PatrolDistance && !angry)
.
Итого: В скрипте, в строке 42 есть 2 объекта, которые =null
, на скрипт ссылается 2 объекта и выдают 4 ошибки, учитывая, что PatrolDistance
определен, делаем вывод, что корень зла - 2 .position
. Но почему они возвращают null
?
Извините, если кого-то запутал своими размышлениями.
public class Slime : Entity
{
private readonly float speed = 3.5f;
private Animator animator;
[SerializeField] private int PatrolDistance;
private readonly Transform StartPoint;
private bool movingRight;
Transform player;
private readonly float maxDistanceAngry;
bool angry = false;
bool calm = false;
bool toBack = false;
private void SetState(SlimeStates value)
{animator.SetInteger("state", (int)value); }
private void Awake()
{
animator = GetComponent<Animator>();
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject == Hero.Instance.gameObject)
{
Hero.Instance.GetDamage(Damage);
}
}
private void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
}
private void Update()
{
if (Vector2.Distance(transform.position, StartPoint.position) < PatrolDistance && !angry)
{
calm = true;
}
if (Vector2.Distance(transform.position, player.position) < maxDistanceAngry)
{
angry = true;
calm = false;
toBack = false;
}
if (Vector2.Distance(transform.position, player.position) > maxDistanceAngry)
{
toBack = true;
angry = false;
}```