zoukankan      html  css  js  c++  java
  • NGUI无法按住鼠标按住时无法监听OnHover事件

    UICamera.cs

    修改前:

     if ((!isPressed) && highlightChanged)
            {
                currentScheme = ControlScheme.Mouse;
                mTooltipTime = RealTime.time + tooltipDelay;
                mHover = mMouse[0].current;
                Notify(mHover, "OnHover", true);
            }

    修改后:

     if ((!isPressed || isPressed) && highlightChanged)
            {
                currentScheme = ControlScheme.Mouse;
                mTooltipTime = RealTime.time + tooltipDelay;
                mHover = mMouse[0].current;
                Notify(mHover, "OnHover", true);
            }

    或者加一个

    if (Input.GetMouseButton(0) && highlightChanged)
            {
                currentScheme = ControlScheme.Mouse;
                mTooltipTime = RealTime.time + tooltipDelay;
                mHover = mMouse[0].current;
                Notify(mHover, "OnHover", true);
            }
    if ((justPressed || !isPressed) && mHover != null && highlightChanged)
            {
                currentScheme = ControlScheme.Mouse;
                if (mTooltip != null) ShowTooltip(false);
                Notify(mHover, "OnHover", false);
                mHover = null;
            }
    
            if ((justPressed || Input.GetMouseButton(0)) && mHover != null && highlightChanged)
            {
                currentScheme = ControlScheme.Mouse;
                if (mTooltip != null) ShowTooltip(false);
                Notify(mHover, "OnHover", false);
                mHover = null;
            }

    监听函数

     void OnHover(bool state)
        {
            Debug.Log(state+"OnHover"+gameObject.name);
        }

     补充:

    因为UICamera.cs 的Update函数里处理是:

       void Update()
        {
            // Only the first UI layer should be processing events
    #if UNITY_EDITOR
            if (!Application.isPlaying || !handlesEvents) return;
    #else
            if (!handlesEvents) return;
    #endif
            current = this;
    
            // Process touch events first  如果是移动平台就调用的ProcessTouches()函数所以之前加的方法 在两个函数里都加上。
            if (useTouch) ProcessTouches();
            else if (useMouse) ProcessMouse();
  • 相关阅读:
    SQLSTATE[HY000] [2002] No such file or directory(转)
    pg_stat_activity各字段的含义
    DedeCMS 后台空白问题
    关于XP和win7 的IIS发布问题
    500错误
    swfupload上传多张照片出现404 错误?(已解决)
    url字符串编码乱码问题
    遮罩层《一》
    Java集合按照索引分页,以及JS数组代码按照索引分页的源码
    填充整个页面
  • 原文地址:https://www.cnblogs.com/123ing/p/3931679.html
Copyright © 2011-2022 走看看