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();
  • 相关阅读:
    Java线程:线程的交互
    Java线程:线程的同步与锁
    重载,继承,重写和多态的区别
    Java线程:线程状态的转换
    Java线程:线程栈模型与线程的变量
    Java线程:创建与启动
    Java线程:概念与原理
    Android上dip、dp、px、sp等单位说明
    Java学习之路:不走弯路,就是捷径
    谷歌大牛 Rob Pike 的 5 个编程原则
  • 原文地址:https://www.cnblogs.com/123ing/p/3931679.html
Copyright © 2011-2022 走看看