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();
  • 相关阅读:
    vs2008支持ajax extender控件
    ComponentArt控件分析之CallBack(1)
    asp.net控件开发技巧(2)关闭基类不必要的功能
    asp.net控件开发技巧(1)使用HtmlTextWriter类规范输出标签
    开了一论坛,专门讨论控件技术
    出来透个气
    道歉
    Kubuntu 9.10 Karmic Koala 预览
    让Nginx 的URL目录自动加斜线”/”
    Nginx的Rewrite正则表达式,匹配非某单词
  • 原文地址:https://www.cnblogs.com/123ing/p/3931679.html
Copyright © 2011-2022 走看看