NullReferenceException: Object reference not set to an instance of an object при запуске анимации

Есть класс player в котором находится функции остановки(stopPlayerAnim) и запуска(startPlayerAnim) анимации игрока, и класс Joystic, в котором они запускаются. Но когда я жму на джойстик игра вылетает со следующей ошибкой:

NullReferenceException: Object reference not set to an instance of an object player.startPlayerAnim () (at Assets/scripts/player.cs:46) Joystic.OnDrag (UnityEngine.EventSystems.PointerEventData eventData) (at Assets/scripts/Joystic.cs:13) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IDragHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/[email protected]/Runtime/EventSystem/ExecuteEvents.cs:71) UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/[email protected]/Runtime/EventSystem/ExecuteEvents.cs:262) UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/[email protected]/Runtime/EventSystem/EventSystem.cs:385)>

При этом ошибка ссылается на эту строчку: player1.GetComponent<Animator>().SetBool("ball_anim", true);

Из-за чего она появляется, и как её можно устранить? Код вышеупомянутых скриптов находится ниже:

player.cs:

public class player : MonoBehaviour
{
  
    public static GameObject player1;
    
    void Start()
    {
     
    }
    
    public static void startPlayerAnim()
    {

        player1.GetComponent<Animator>().SetBool("ball_anim", true);
        player1.GetComponent<Animator>().SetBool("inverted_ball_anim", false);
    }

    public static void stopPlayerAnim()
    {

        player1.GetComponent<Animator>().SetBool("ball_anim", false);
        player1.GetComponent<Animator>().SetBool("inverted_ball_anim", false);
    }

    public static void startInvertedPlayerAnim()
    {
        player1.GetComponent<Animator>().SetBool("inverted_ball_anim", true);
        player1.GetComponent<Animator>().SetBool("ball_anim", false);

    }
   
    

  
    

   

    
}

Ответы (1 шт):

Автор решения: KOTlK
  1. Вы не инициализировали player1, у вас просто пустое поле.

  2. Также проверьте, есть ли скрипт аниматора на объекте, у которого вы пытаетесь получить компонент.

→ Ссылка