Всем привет! В упор не могу разобраться почему вылетает ошибка Null reference exception. При попытке воспользоваться в скрипте Attacker методом из PlayerController "GetDestinationOfAttack()". Анализ показал, что переменная destination в скрипте Attacker так и остается null. Просьба помочь разобраться.
Код ниже из двух скриптов (Attacker) и (PlayerController):
using UnityEngine;
public class Attacker : MonoBehaviour
{
[SerializeField] float speed = 1f;
PlayerController playerController;
Transform destination = null;
// Start is called before the first frame update
void Start()
{
playerController = GetComponent();
destination = playerController.GetDestinationOfAttack();
}
}
public class PlayerController : MonoBehaviour
{
[SerializeField] GameObject unitProducedPrefab = null;
Во первых - упакуйте код в тег, отвратительно, мерзко смотреть на это месиво.
Во вторых - я хз, что такое target, но GetComponent вызывается с типом, который вы рассчитываете получить, а не просто так. GetComponent as Transform всегда вам вернет нуль.
В третьих - transform из GameObject можно достать просто свойством, незачем лишний раз насиловать моно геткомпонентами.
Разобрался в проблеме. Здесь код не верно скопировался т.к. пропало весь текст с знаками <>. С destinationOfAttack все нормально было. А вот в
void Start()
{
playerController = GetComponent(); // здесь надо было использоваться FindObjectOfType.
destination = playerController.GetDestinationOfAttack();
}