툴팁이란, 플레이어에게 정보를 전달하는 아주 효율적인 수단이다.






a05504ab093378f720b8dfb336ef203edd30e54f3c08a370c0


( 슬레이 더 스파이어에서 볼 수 있는 마우스를 따라다니는 형태의 툴팁 )






a05504ab093378f423ee98b21fd70403662ab94bc7095bda887edf


( 고정된 위치에 등장하는 형태의 툴팁 )





위와 같이 보통 두 가지 형태로 구현되곤 한다.






a05504ab093376a167b9f68b12d21a1d32310d7e09253f


( TextMesh 속 일부 텍스트에 툴팁을 걸어 놓은 모습 )




이러한 툴팁을 텍스트 일부분에 걸어 놓고 싶을 때가 있는데,


방법은 다음과 같다.




1. 링크 태그 삽입하기




먼저, 툴팁을 띄울 텍스트에 링크를 삽입해주어야 한다.





    // 링크 삽입
    public void InjectTooltipLinks()
    {
        evolveLogText.text = $"<link=description\">설명입니다.</link>";
    }






이렇게 설명에 대하여 description이라는 ID를 포함하여 링크 태그로 감싸준다.




2. 링크 태그 찾기





24b0d121e09c28a8699fe8b115ef046b6e679930


( link + in 이 금지어 걸려서 이미지로 대체 )




TMP에서 제공해주는 함수를 활용 -> 현재 마우스 위치에 해당하는 링크 인덱스 찾기!

( Canvas => Screen Space - Camera 기준 )



그리고 찾아온 링크 아이디를 확인해서 툴팁을 띄우면 끝!!



필자는 다음의 과정을 Update에서 체크함.





3. 툴팁 띄우기





24b0d121e09c28a8699fe8b115ef046f5f4f909c





링크를 삽입한 텍스트는 이런식으로 보이고





a14538aa0e2e76a167b9f68b12d21a1de56938d9feb648





이렇게 이쁘게 작동하는 것을 확인할 수 있다!





요약 :


텍스트 링크 태그로 감싸주기 => 제공하는 함수를 통해 링크 정보 찾기 => 링크 ID 확인 후 툴팁 띄우기





4. 다른 UI 위에 생성되는 것을 방지




이러한 방식이 마우스 위치를 기준으로 확인하는 방식이다 보니,





189490aa1936b4519eff5a56eb5dc0ecf383b2d2e9fa7dca70ee79b7252d730d





이렇게 다른 UI 위에서도 감지가 되어버리는 문제가 있다...






using UnityEngine;
using UnityEngine.EventSystems;

public class Script : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public bool isHover;

    public void OnPointerEnter(PointerEventData eventData)
    {
        isHover = true;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        isHover = false;
    }
}





필자는 이렇게 일단 해당 가려지지 않았는지 한 번 체크하고,





24b0d121e09c28a8699fe8b115ef046a7f64ebc4


( link + in 이 금지어 걸려서 이미지로 대체 )




가려지지 않았을 때 작동하는 방식으로 해결했다!





a76f00ac360e76a167b9f68b12d21a1d35316a411c5b84




짠!



다들, 플레이어의 편의성을 위해 세심한 툴팁 하나씩 넣어보는 것을 어떨까,,,??




5. 마치며




다음에는 소소한 팁 들을 모아서 가져와볼까 합니다,,,





a05709aa0103782a8a7f5b56eb9f2334e3c36e0135307c5c996bdebba370



특성 획득창 이쁘게 만들어진 거 보고가~