[Unity] UGUI에서 커서가 ui에 겹칠 때 메시지 보내기
업데이트
2018/11/1 계속된 기사를 썼습니다.
[Unity] UGUI에서 커서가 ui에 겹칠 때 메시지 2
개요
아이콘 위에 마우스 커서를 자주 겹치게 하려면 팝업 메시지로 표시하는 일을 ugui로 해 보십시오.
ugui로 ui 위에 마우스를 올리면 메시지를 보내는 일을 하고 싶어서 아침부터 만들었어요.고려화
아이콘 위에 마우스 커서를 자주 겹치게 하려면 팝업 메시지로 표시하는 일을 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);
}
}
디테일
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를 저장하고 레이의 좌표만 가져와 표시합니다.
대충 조사한 느낌은 주위의 구조를 이해하면 가능...?
Reference
이 문제에 관하여([Unity] UGUI에서 커서가 ui에 겹칠 때 메시지 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daria_sieben/items/ccc8cf92676692fde5b2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)