using System.Collections; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems; namespace Michsky.MUIP { [RequireComponent(typeof(Animator))] [RequireComponent(typeof(Button))] public class SwitchManager : MonoBehaviour, IPointerEnterHandler { // Events [SerializeField] public SwitchEvent onValueChanged = new SwitchEvent(); public UnityEvent OnEvents; public UnityEvent OffEvents; // Saving public bool saveValue = true; public string switchTag = "Switch"; // Settings public bool isOn = true; public bool invokeAtStart = true; public bool enableSwitchSounds = false; public bool useHoverSound = true; public bool useClickSound = true; // Resources public Animator switchAnimator; public Button switchButton; public AudioSource soundSource; // Audio public AudioClip hoverSound; public AudioClip clickSound; [System.Serializable] public class SwitchEvent : UnityEvent { } bool isInitialized = false; void Awake() { if (switchAnimator == null) { switchAnimator = gameObject.GetComponent(); } if (switchButton == null) { switchButton = gameObject.GetComponent