标签:tin lse deb reads 实现 不同 position mouse point
unity ui中鼠标移进或者移出的触发方式与2d、3d的不同,2d、3d物体使用的是onmouseover,ui使用的是OnPointerEnter。需要实现以下两个接口。
public class TrackMouse: MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
// Called when the pointer enters our GUI component.
// Start tracking the mouse
public void OnPointerEnter( PointerEventData eventData )
{
StartCoroutine( "TrackPointer" );
}
// Called when the pointer exits our GUI component.
// Stop tracking the mouse
public void OnPointerExit( PointerEventData eventData )
{
StopCoroutine( "TrackPointer" );
}
IEnumerator TrackPointer()
{
var ray = GetComponentInParent<GraphicRaycaster>();
var input = FindObjectOfType<StandaloneInputModule>();
if( ray != null && input != null )
{
while( Application.isPlaying )
{
Vector2 localPos; // Mouse position
RectTransformUtility.ScreenPointToLocalPointInRectangle( transform as RectTransform, Input.mousePosition, ray.eventCamera, out localPos );
// local pos is the mouse position.
yield return 0;
}
}
else
UnityEngine.Debug.LogWarning( "Could not find GraphicRaycaster and/or StandaloneInputModule" );
}
}
原文出自unity官方论坛,详情可以查看https://forum.unity.com/threads/problem-with-onmousedown-onmouseover-in-ui.326096/
标签:tin lse deb reads 实现 不同 position mouse point
原文地址:https://www.cnblogs.com/zhoushiya/p/12208548.html