using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; [RequireComponent(typeof(Image))] public class SwapButton : MonoBehaviour, IPointerClickHandler { public Image TargetImage; public Sprite ASprite; public UnityEvent ClickEventA = new UnityEvent(); public Sprite BSprite; public UnityEvent ClickEventB = new UnityEvent(); [SerializeField] private bool _trueA_FalseB = true; public bool TrueA_FalseB { get => _trueA_FalseB; set { _trueA_FalseB = value; UpdateVisual(); // 값이 바뀔 때마다 자동으로 실행! } } private void Awake() { TargetImage = GetComponent(); } public void OnPointerClick(PointerEventData eventData) { TrueA_FalseB = !TrueA_FalseB; if (TrueA_FalseB) ClickEventA?.Invoke(); else ClickEventB?.Invoke(); } private void OnValidate() { UpdateVisual(); } public void UpdateVisual() { if (TargetImage == null) return; TargetImage.sprite = _trueA_FalseB ? ASprite : BSprite; } }