78 lines
2.4 KiB
C#
78 lines
2.4 KiB
C#
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 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()
|
|
{
|
|
playButton.onClick.AddListener(() => LoadScene("Gameplay"));
|
|
customizeButton.onClick.AddListener(() => LoadScene("Customization"));
|
|
leaderboardButton.onClick.AddListener(() => LoadScene("Leaderboard"));
|
|
exitButton.onClick.AddListener(Application.Quit);
|
|
|
|
AnimateMenu();
|
|
}
|
|
|
|
private void HandleMusic()
|
|
{
|
|
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();
|
|
}
|
|
}
|
|
} |