Как сделать, чтобы в OnPoinerDown _fingerID нормально задавался?

Во-первых, почему-то Unity выкидывает ошибку Object Reference Has Not Instance As Object во второй строке в Start'е, хотя cinemachineCamera в Инспекторе указана. Во-вторых, в OnPoinerDown _fingerID берётся какой-то очень большой (делал как в уроке https://youtu.be/I5Ru5bIyLuY?si=TQ4QAcq9b78P-RAY), поэтому в foreach'е touch.fingerID никогда не равен _fingerID. Вот код:

using Cinemachine;
using UnityEngine;
using UnityEngine.EventSystems;

namespace Player
{
    public class CameraRotation : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
    {
        [SerializeField] private bool isMobile = true;
        [SerializeField] private float sensitivity;
        [SerializeField] private CinemachineVirtualCamera cinemachineVirtualCamera;
        private CinemachinePOV _cinemachinePov;
        private int _fingerId;
        private bool _isPressed;
        private void Start()
        {
            print((cinemachineVirtualCamera == null));
            _cinemachinePov = cinemachineVirtualCamera.GetCinemachineComponent<CinemachinePOV>();
            if (!isMobile)
            {
                _cinemachinePov.m_HorizontalAxis.m_InputAxisName = "Mouse X";
                _cinemachinePov.m_VerticalAxis.m_InputAxisName = "Mouse Y";
                return;
            }

            _cinemachinePov.m_HorizontalAxis.m_MaxSpeed = sensitivity;
            _cinemachinePov.m_VerticalAxis.m_MaxSpeed = sensitivity;
            _cinemachinePov.m_HorizontalAxis.m_InputAxisName = "";
            _cinemachinePov.m_VerticalAxis.m_InputAxisName = "";
        }
        
        public void OnPointerDown(PointerEventData eventData)
        {
            if (!eventData.pointerCurrentRaycast.gameObject == gameObject) return;
            _isPressed = true;
            _fingerId = eventData.pointerId;
        }
     
        public void OnPointerUp(PointerEventData eventData)
        {
            _isPressed = false;
            _cinemachinePov.m_VerticalAxis.m_InputAxisValue = 0;
            _cinemachinePov.m_HorizontalAxis.m_InputAxisValue = 0;
        }
        
        private void Update()
        {
            if (!_isPressed) return;
            foreach (Touch touch in Input.touches)
            {
                if (touch.fingerId != _fingerId)
                {
                    print(touch.fingerId + " " + _fingerId); 
                    continue;
                }

                switch (touch.phase)
                {
                    case TouchPhase.Moved:
                        _cinemachinePov.m_VerticalAxis.m_InputAxisValue = touch.deltaPosition.y;
                        _cinemachinePov.m_HorizontalAxis.m_InputAxisValue = touch.deltaPosition.x;
                        break;
                    case TouchPhase.Stationary:
                        _cinemachinePov.m_VerticalAxis.m_InputAxisValue = 0;
                        _cinemachinePov.m_HorizontalAxis.m_InputAxisValue = 0;
                        break;
                }
            }
        }
    }
}

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