better main menu
This commit is contained in:
1 parent
e039461a83
commit
1d7d176814
6 files changed
+505
-296
No files matched your search
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user