better main menu

This commit is contained in:
MrTorex committed 2026-03-08 10:50:29 +03:00
1 parent e039461a83
commit 1d7d176814
6 files changed
+505 -296

No files matched your search

+56 -6
View File
@@ -1,28 +1,78 @@
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using PrimeTween;
namespace Code.UI
{
public class MainMenuController : MonoBehaviour
{
[SerializeField] private RectTransform logoTransform;
[SerializeField] private CanvasGroup buttonsContainer;
[SerializeField] private RectTransform[] buttons;
[SerializeField] private Image backgroundImage;
[SerializeField] private Button playButton;
[SerializeField] private AudioSource musicAudioSource;
[SerializeField] private Button leaderboardButton;
[SerializeField] private Button customizeButton;
[SerializeField] private Button exitButton;
[SerializeField] private AudioSource musicPrefab;
private static AudioSource _instanceMusic;
private void Awake()
{
HandleMusic();
}
private void Start()
{
DontDestroyOnLoad(musicAudioSource);
playButton.onClick.AddListener(LoadGameplay);
playButton.onClick.AddListener(() => LoadScene("Gameplay"));
customizeButton.onClick.AddListener(() => Debug.Log("Customization"));
leaderboardButton.onClick.AddListener(() => Debug.Log("Leaderboard"));
exitButton.onClick.AddListener(Application.Quit);
AnimateMenu();
}
private void LoadGameplay()
private void HandleMusic()
{
SceneManager.LoadScene("Gameplay");
if (_instanceMusic == null)
{
_instanceMusic = Instantiate(musicPrefab);
DontDestroyOnLoad(_instanceMusic.gameObject);
}
}
private void AnimateMenu()
{
backgroundImage.color = new Color(1, 1, 1, 0);
Tween.Alpha(backgroundImage, 1f, 1f);
Tween.Scale(logoTransform, 1.05f, 1f, Ease.InOutSine, cycles: -1, cycleMode: CycleMode.Yoyo);
for (var i = 0; i < buttons.Length; i++)
{
var btn = buttons[i];
btn.localScale = Vector3.zero;
Tween.Scale(btn, 1f, 0.5f, Ease.OutBack, startDelay: i * 0.1f);
}
}
private void LoadScene(string sceneName)
{
Tween.Alpha(buttonsContainer, 0f, 0.3f).OnComplete(() =>
{
SceneManager.LoadScene(sceneName);
});
}
private void OnDestroy()
{
playButton.onClick.RemoveAllListeners();
customizeButton.onClick.RemoveAllListeners();
leaderboardButton.onClick.RemoveAllListeners();
exitButton.onClick.RemoveAllListeners();
}
}
}