Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using UnityEngine;
- using UnityEngine.UI;
- public enum GameColor
- {
- Red,
- Green,
- Blue
- }
- public class Singleton<T>: MonoBehaviour
- {
- private static T instance;
- public static T Instance
- {
- get
- {
- if (instance == null)
- {
- instance = (T)(object)FindObjectOfType(typeof(T));
- }
- return instance;
- }
- }
- }
- public class GameManager : Singleton<GameManager>
- {
- [SerializeField] public GameColor Color;
- public void OnLost()
- {
- Debug.Log("You lost!");
- }
- public void OnWin()
- {
- Debug.Log("You win!");
- }
- public event Action OnLostEvent;
- public event Action OnWinEvent;
- private void OnEnable()
- {
- OnLostEvent += OnLost;
- OnWinEvent += OnWin;
- }
- private void OnDisable()
- {
- OnLostEvent -= OnLost;
- OnWinEvent -= OnWin;
- }
- private bool CheckIsWin(GameColor color)
- {
- return Color == color;
- }
- public void onClickCheckIsWin(GameColor color)
- {
- if (CheckIsWin(color))
- {
- OnWinEvent?.Invoke();
- return;
- }
- OnLostEvent?.Invoke();
- }
- }
- public class ButtonColor : MonoBehaviour
- {
- [SerializeField] GameColor color;
- [HideInInspector] [SerializeField] Button Button;
- private void Reset()
- =>
- this.Button = GetComponent<Button>();
- private void OnEnable()
- =>
- this.Button.onClick.AddListener(() => GameManager.Instance.onClickCheckIsWin(this.color));
- private void OnDisable()
- =>
- this.Button.onClick.RemoveListener(() => GameManager.Instance.onClickCheckIsWin(this.color));
- }
Advertisement
Add Comment
Please, Sign In to add comment