Как сделать настройку чувствительности в юнити?

как сделать ползунок изменения чувствительности в юнити? вот мой код камеры:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraMovement : MonoBehaviour
{
    public float sensivity;

    [SerializeField] private float minY;
    [SerializeField] private float maxY;

    private float xRotation = 0f;
    private float yRotation = 0f;

    private void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    private void Update()
    {
        float xInput = Input.GetAxis("Mouse X") * sensivity * 600 * Time.deltaTime;
        float yInput = Input.GetAxis("Mouse Y") * sensivity * 600 * Time.deltaTime;

        yRotation += xInput;

        xRotation -= yInput;
        xRotation = Mathf.Clamp(xRotation, minY, maxY);

        transform.localRotation = Quaternion.Euler(xRotation, yRotation, 0);
    }
}

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

Автор решения: Vladimir

Для редактора - RangeAttribute:

    [Range(1, 100)] 
    public float sensivity;

Для рантайма - Slider:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CameraMovement : MonoBehaviour
{
    private const float minSensitivity = 1;
    private const float maxSensitivity = 100;

    [Range(minSensitivity, maxSensitivity)]
    public float sensitivity;

    [SerializeField] private Slider slider;

    [SerializeField] private float minY;
    [SerializeField] private float maxY;

    private float xRotation = 0f;
    private float yRotation = 0f;

    private void Awake()
    {
        slider.onValueChanged.AddListener(value =>
        {
            sensitivity = Mathf.Max(minSensitivity, value * maxSensitivity); // Значение, которое выдаёт слайдер, всегда в диапазоне 0-1
        });
    }

    private void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    private void Update()
    {
        float xInput = Input.GetAxis("Mouse X") * sensitivity * 600 * Time.deltaTime;
        float yInput = Input.GetAxis("Mouse Y") * sensitivity * 600 * Time.deltaTime;

        yRotation += xInput;

        xRotation -= yInput;
        xRotation = Mathf.Clamp(xRotation, minY, maxY);

        transform.localRotation = Quaternion.Euler(xRotation, yRotation, 0);
    }

    private void OnDestroy()
    {
        slider.onValueChanged.RemoveAllListeners();
    }
}

Затем нужно создать слайдер: GameObject->UI->Slider, и перетащить его в поле в инспекторе.

Альтернативно, вместо Awake и OnDestroy можно подписываться и отписываться в OnEnable и OnDisable.

→ Ссылка