当前位置:   article > 正文

Unity笔记之获取鼠标停留的UI和删除按键触发后引用、判断鼠标是否在UI上_unity鼠标在ui上移动如何获得指向的ui

unity鼠标在ui上移动如何获得指向的ui

需求:鼠标放在UI上,需要获取这个UI物体,以方便进行其他操作。

百度学习了半天,最终拿了一个大哥(添加链接描述)的内容。本文仅作为个人笔记,建议大家直接去这大哥的博客看。不过我记得好像也可以通过继承unity内部的鼠标事件接口获取到物体,但是由于时间紧,等后面有时间或者想起了再加吧。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour
{
    GameObject currentCanvas;
    void Start()
    {
        currentCanvas = gameObject;
    }

    void Update()
    {
        Debug.Log(GetUI(currentCanvas).name);
    }

    /// <summary>
    /// 获取鼠标停留处UI
    /// </summary>
    public static GameObject GetUI(GameObject canvas)
    {
        if (canvas.GetComponent<GraphicRaycaster>() == null) return null;
        PointerEventData pointerEventData = new PointerEventData(EventSystem.current);
        pointerEventData.position = Input.mousePosition;
        GraphicRaycaster gr = canvas.GetComponent<GraphicRaycaster>();
        List<RaycastResult> results = new List<RaycastResult>();
        gr.Raycast(pointerEventData, results);
        if (results.Count != 0)
        {
            return results[0].gameObject;
        }
        return null;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

需求2:发现一个小问题,就是在使用UGUI的时候,如果点击了某个按钮之后不进行任何操作直接按键盘上的空格键就相当于再次点击了上一次点击过的那个按键。

所以要解决这个问题我们得把这个unity记录的地方在我们点击触发方法之后就把这个保存的按键给删除引用。

//在需要取消的地方加上这段就可以了
 UnityEngine.EventSystems.EventSystem.current.SetSelectedGameObject(null, null);
  • 1
  • 2

加上这句代码就可以删除引用了。

需求3:判断鼠标是否在UI上

   if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())//如果鼠标在UI上就返回
   {
       return;
   }
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/542907
推荐阅读
相关标签
  

闽ICP备14008679号