[Unity] UGUI에서 커서가 ui에 겹칠 때 메시지 보내기

4803 단어 Unity

업데이트


2018/11/1 계속된 기사를 썼습니다.
[Unity] UGUI에서 커서가 ui에 겹칠 때 메시지 2

개요


아이콘 위에 마우스 커서를 자주 겹치게 하려면 팝업 메시지로 표시하는 일을 ugui로 해 보십시오.
ugui로 ui 위에 마우스를 올리면 메시지를 보내는 일을 하고 싶어서 아침부터 만들었어요.고려화

○ 쓸


・IPointerEnterHandler

인터페이스는 사용자 인터페이스에서 생성된 ui에서 마우스 커서가 겹칠 때 호출되는 이벤트 On Pointer Enterbr/>
한 번 겹치면 두 번 부르지 마세요. 같은 ui로 이 이벤트를 다시 부르기 위해서는 ui를 한 번 떠나거나 다른 ui에 겹쳐야 합니다.p>

・IPointerExit Handler

위의 이벤트와 반대로 인터페이스는 "이벤트 On Pointer Exit"로 불리며, 한 번 겹친 ui나 다른 ui와 겹쳤을 때 호출되는 이벤트를 멀리합니다.p>

샘플 코드



using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class HelpBox : MonoBehaviour , IPointerEnterHandler, IPointerExitHandler
{
    [SerializeField] private string _helpMessage;

    [SerializeField] private Text _text;
    private const Vector2 POPUP_OFFSET = new Vector3(0, 10);
    public void OnPointerEnter(PointerEventData eventData)
    {
        _text.transform.position = eventData.position + POPUP_OFFSET;
        _text.text = _helpMessage;
        _text.transform.gameObject.SetActive(true);

    }

    public void OnPointerExit(PointerEventData eventData)
    {
        _text.transform.parent.gameObject.SetActive(false);
    }
}

디테일


상기 두 인터페이스를 계승하는 구성 요소를 만듭니다. ui가 겹칠 때serialize Field에 설정된 텍스트를 표시하고 ui를 떠난 후 텍스트를 숨깁니다br/>
이 구성 요소를 표시하고자 하는 게임 대상만 추가하면 됩니다. (애니메이션 부분은 Image와 Button입니다.)br/>
Serialize Field에서 설정한 Text의 Raycast Target를 제거하지 않으면 팝업 디스플레이에서 커서가 겹쳐 On Point erExit가 호출됩니다.On Point erExit라고 부르면 팝업이 숨겨지기 때문에 바로 On Pointer Enter라고 부르고 팝업을 표시합니다...이런 순환을 반복합니다br/>
pic.twitter.com/NaDMQ5e4gi


문제점


현재 POP를 표시할 수 있지만, 광범위하게 사용하려면 이 구성 요소에 다음과 같은 문제가 있습니다

• 모든 열린 대상에 같은 팝업 모드로 설정해야 하는 Text

· 팝업하지 않으려는 게임 대상 Ui의 RaycastTarget에 대한 검사를 취소해야 합니다


그래서 이런 일을 할 수 있었으면 좋겠다고 생각해요.br/>
· 레이가 명중한 게임 대상이 특정 인터페이스(부품)가 있으면 팝업을 표시합니다
· 팝업 관리 클래스는 팝업용 Text를 저장하고 레이의 좌표만 가져와 표시합니다.


대충 조사한 느낌은 주위의 구조를 이해하면 가능...?


좋은 웹페이지 즐겨찾기