Как влияет смена значений в инициализации при объявлении поля на следующий запуск PlayMode Unity?

Проблема такая, что когда меняю значение в инициализации при объявлении поля, то при следующем запуске PlayMode'а остаётся старое значение, меняю его ещё раз, оно меняется на предыдущее, а не текущее значение. Поле с модификатором private. Unity как-то кэширует это значение? Лучше присваивать значение в Awake, Start?

Вот пример кода:

using System;
using System.Collections;
using UnityEngine;

public class MouseEvent : MonoBehaviour
{
    public event Action<Vector3> OnMousePositionReceived;
    public event Action<Vector3> OnDragMousePositionReceived;
    public event Action<Vector3> OnClickMousePositionReceived;
    public event Action<RaycastHit> OnClickUpHitReceived;
    public event Action OnClickUp;
    public event Action OnDrag;

    private float _clickStartTime;
    private bool _isDragging;
    private Coroutine _dragCoroutine;
    private RaycastHit _hit;
    private LayerMask _layerMaskInteractable;

    private float _clickThreshhold = 0.25f;

    private void Awake()
    {
        _layerMaskInteractable = LayerMask.GetMask(LayerMask.LayerToName(GameConstants.CONST_LAYER_INDEX_INTERACTABLE));
        _isDragging = false;
    }

    private void Update()
    {
        ReceviengMousePosition(out _hit);

        if (Input.GetMouseButtonDown(0))
        {
            _clickStartTime = Time.time;
            OnClickMousePositionReceived?.Invoke(Input.mousePosition);

            if (_isDragging == false)
            {
                _isDragging = true;
                _dragCoroutine = StartCoroutine(BeginDrag());
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            if (_isDragging)
            {
                _isDragging = false;
                StopCoroutine(_dragCoroutine);

                Debug.Log(_clickThreshhold);
                if (Time.time - _clickStartTime < _clickThreshhold)
                {
                    OnClickUp?.Invoke();
                    OnClickUpHitReceived?.Invoke(_hit);
                }
            }
        }
    }

    private IEnumerator BeginDrag()
    {
        while (Input.GetMouseButton(0))
        {
            OnDrag?.Invoke();
            OnDragMousePositionReceived?.Invoke(Input.mousePosition);
            yield return null;
        }
    }

    public void ReceviengMousePosition(out RaycastHit hit)
    {
        Vector3 mousePosition = Input.mousePosition;
        mousePosition.z = Camera.main.nearClipPlane;
        Ray ray = Camera.main.ScreenPointToRay(mousePosition);


        if (Physics.Raycast(ray, out hit, 100))
        {
            OnMousePositionReceived?.Invoke(hit.point);
        }
    }

}


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