Загрузка данных


using UnityEngine;
using UnityEngine.UI;

public class Clicker : MonoBehaviour
{
    public Button clickButton;
    public Text counterText;
    public AudioClip clickSound;
    public float pressScale = 0.9f;
    public float animationDuration = 0.1f;

    private int clicks;
    private AudioSource audioSource;
    private Vector3 originalScale;
    private bool isAnimating;
    private float animationTimer;
    private bool isPressed;

    private void Start()
    {
        clicks = PlayerPrefs.GetInt("Clicks", 0);
        UpdateText();
        clickButton.onClick.AddListener(OnClick);
        audioSource = gameObject.AddComponent<AudioSource>();
        audioSource.playOnAwake = false;
        audioSource.spatialBlend = 0f;
        originalScale = clickButton.transform.localScale;
    }

    private void OnClick()
    {
        clicks++;
        UpdateText();
        PlayerPrefs.SetInt("Clicks", clicks);
        PlayerPrefs.Save();
        PlaySound();
        StartPressAnimation();
    }

    private void UpdateText()
    {
        counterText.text = clicks.ToString();
    }

    private void PlaySound()
    {
        if (clickSound != null)
        {
            audioSource.PlayOneShot(clickSound);
        }
    }

    private void StartPressAnimation()
    {
        isPressed = true;
        isAnimating = true;
        animationTimer = 0f;
    }

    private void Update()
    {
        if (!isAnimating) return;

        animationTimer += Time.deltaTime;
        float t = Mathf.Clamp01(animationTimer / animationDuration);

        if (isPressed)
        {
            float scale = Mathf.Lerp(1f, pressScale, t);
            clickButton.transform.localScale = originalScale * scale;

            if (t >= 1f)
            {
                isPressed = false;
                animationTimer = 0f;
            }
        }
        else
        {
            float scale = Mathf.Lerp(pressScale, 1f, t);
            clickButton.transform.localScale = originalScale * scale;

            if (t >= 1f)
            {
                clickButton.transform.localScale = originalScale;
                isAnimating = false;
            }
        }
    }

    private void OnApplicationPause(bool pause)
    {
        PlayerPrefs.SetInt("Clicks", clicks);
        PlayerPrefs.Save();
    }
}