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();