본문 바로가기
Unity3D/Unity & C#

Unity & C# ~ Button Sprite Swap Scirpt Controller

by 캬캬백곰 2022. 5. 31.
728x90
using System.Collections;

using UnityEngine;
using UnityEngine.UI;

public class HUD_ButtonController : MonoBehaviour
{
    [SerializeField] Sprite defaultSprite;
    [SerializeField] Sprite selectedSprite;
    [SerializeField] Sprite pressedSprite;
    [SerializeField] Sprite highlightSprite;

    Image thisImage;

    bool isPress = false;
    bool IsPress { get { return isPress; } set { isPress = value; } }

    private const float pressTime = 0.1f;

    private void Awake()
    {
        thisImage = GetComponent<Image>();
    }

    public void PressFunc()
    {
        thisImage.sprite = pressedSprite;
        IsPress = true;

        StartCoroutine(ChangedSpriteFunc(selectedSprite, pressTime));
    }

    public void DeSelectedFunc()
    {
        IsPress = false;
        thisImage.sprite = defaultSprite;
    }

    public void MouseOverFunc() //마우스가 버튼 위에 올라왔을 때
    {
        if (IsPress.Equals(false))
            thisImage.sprite = highlightSprite;
    }

    public void MouseExitFunc() //마우스가 버튼 위에서 나갔을 때
    {
        if (IsPress.Equals(false))
            thisImage.sprite = defaultSprite;
    }

    IEnumerator ChangedSpriteFunc(Sprite _sprite, float _time)
    {
        yield return new WaitForSeconds(_time);

        thisImage.sprite = _sprite;
    }
}
728x90
반응형