背包系统中的鼠标悬停显示物品信息
2017-10-03 23:39
1176 查看
在游戏中经常会有物品属性的查看,这些实现往往都是当鼠标移动到该物体上时弹出一个属性框,简单的做法是做一个UI框,将它的Active设置成false,就是不让它显示,只有当鼠标移动到这个物体上时,才会让它显示,这样的话,可以考虑OnMouseEnter()方法、OnMouseExit()方法的组合,或者也可以用接口即IPointerEnterHandler和IPointerExitHandler,今天用接口做的,也不知道为什么用OnMouseEnter()方法没反应,也就用了接口,而且习惯用接口,好了,下面就贴上代码:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;
using UnityEngine.UI;
public class PopPropertyGridWhenMouseOver : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public GameObject obj;
public void OnPointerEnter(PointerEventData eventData)
{
obj.SetActive(true);
}
public void OnPointerExit(PointerEventData eventData)
{
obj.SetActive(false);
}
}
obj 即是属性框,将这个脚本拖到相应的物体上,然后把属性框拖到脚本的GameObject里面就可以了;
上面的是比较简单的,还有一种稍微复杂一点的是,当鼠标悬停在物体上时,让它等一段时间再弹出属性框,这养的话需要做一个时间判断,先上代码:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;
using UnityEngine.UI;
public class PopPropertyGridWhenMouseOver : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public GameObject obj;
private bool _isEnter;
private float _timer;
void Update()
{
_timer += Time.deltaTime;
if (_isEnter && _timer - 1.0f > 0f)
{
obj.SetActive(true);
}
}
public void OnPointerEnter(PointerEventData eventData)
{
_timer = 0;
_isEnter = true;
}
public void OnPointerExit(PointerEventData eventData)
{
_isEnter = false;
obj.SetActive(false);
}
}
上面的这段代码是当鼠标悬停在无统一上时,过一秒钟再弹出属性框。
下面对这段代码做一个解释:
首先使用了两个接口IPointerEnterHandler和IPointerExitHandler,用以处理当鼠标进入物体和离开物体时所出发的事件,同时有一个计时器 _timer,还有一个判断鼠标是否进入物体的bool变量_isEnter;
在Update中让计时器开始累加,并做了一个判断,这个判断是处理属性框弹出的,表示的是当鼠标进入物体并停留一秒后让属性框弹出来;
OnPointerEnter方法是实现接口IPointerEnterHandler的,它表示的是每次当鼠标进入物体之后都将计时器重置为0,并将_isEnter赋值为true;
OnPointerExit方法是实现接口IPointerExitHandler的,他表示的是每次当鼠标离开物体时,将_isEnter赋值为false,并将属性框隐藏。
如上面的,每次鼠标进入物体后都会将计时器重置为0,然后开始累加,当计时器的值大于1的时候,属性框就会弹出,如果在计时器还未累加到1的时候鼠标就移出了物体,那么计时器也会继续累加,但是即使它超过1,也不会弹出属性框,只有当鼠标在物体中连续待过1秒,才会弹出属性框,当然,1秒可能有点长,这个时间是可以自己去设置的。
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;
using UnityEngine.UI;
public class PopPropertyGridWhenMouseOver : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public GameObject obj;
public void OnPointerEnter(PointerEventData eventData)
{
obj.SetActive(true);
}
public void OnPointerExit(PointerEventData eventData)
{
obj.SetActive(false);
}
}
obj 即是属性框,将这个脚本拖到相应的物体上,然后把属性框拖到脚本的GameObject里面就可以了;
上面的是比较简单的,还有一种稍微复杂一点的是,当鼠标悬停在物体上时,让它等一段时间再弹出属性框,这养的话需要做一个时间判断,先上代码:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;
using UnityEngine.UI;
public class PopPropertyGridWhenMouseOver : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public GameObject obj;
private bool _isEnter;
private float _timer;
void Update()
{
_timer += Time.deltaTime;
if (_isEnter && _timer - 1.0f > 0f)
{
obj.SetActive(true);
}
}
public void OnPointerEnter(PointerEventData eventData)
{
_timer = 0;
_isEnter = true;
}
public void OnPointerExit(PointerEventData eventData)
{
_isEnter = false;
obj.SetActive(false);
}
}
上面的这段代码是当鼠标悬停在无统一上时,过一秒钟再弹出属性框。
下面对这段代码做一个解释:
首先使用了两个接口IPointerEnterHandler和IPointerExitHandler,用以处理当鼠标进入物体和离开物体时所出发的事件,同时有一个计时器 _timer,还有一个判断鼠标是否进入物体的bool变量_isEnter;
在Update中让计时器开始累加,并做了一个判断,这个判断是处理属性框弹出的,表示的是当鼠标进入物体并停留一秒后让属性框弹出来;
OnPointerEnter方法是实现接口IPointerEnterHandler的,它表示的是每次当鼠标进入物体之后都将计时器重置为0,并将_isEnter赋值为true;
OnPointerExit方法是实现接口IPointerExitHandler的,他表示的是每次当鼠标离开物体时,将_isEnter赋值为false,并将属性框隐藏。
如上面的,每次鼠标进入物体后都会将计时器重置为0,然后开始累加,当计时器的值大于1的时候,属性框就会弹出,如果在计时器还未累加到1的时候鼠标就移出了物体,那么计时器也会继续累加,但是即使它超过1,也不会弹出属性框,只有当鼠标在物体中连续待过1秒,才会弹出属性框,当然,1秒可能有点长,这个时间是可以自己去设置的。
相关文章推荐
- jQuery鼠标悬停显示提示信息窗口
- js菜单栏(以鼠标悬停到头像显示详细信息为例)
- VC++实现在系统托盘来新消息闪烁,鼠标悬停显示窗口
- jQuery购物图片中的鼠标悬停显示详细信息效果
- EXTJS 4.2 实现 gridpanel 鼠标悬停单元格以提示信息的方式显示单元格内容。
- jQuery实现鼠标悬停显示提示信息窗口的方法
- ArcGIS api for javascript——鼠标悬停时显示信息窗口
- jQuery鼠标悬停显示提示信息窗口
- 实现http://www.wandoujia.com/中的鼠标悬停显示详细信息效果
- UGUI_背包系统的自动化布局,选中格子特殊显示,物品描述跟随
- MFC/VC 鼠标悬停在控件上方显示信息
- jQuery鼠标悬停显示提示信息窗体
- Unity学习笔记——鼠标移动到物品上显示物品名字,点击后显示物品信息
- jquery特效--鼠标悬停显示提示信息
- jquery 鼠标悬停显示信息提示框
- Swing鼠标悬停时巧用上下文菜单显示提示信息
- ArcGIS api for javascript——鼠标悬停时显示信息窗口
- 鼠标悬停显示详细信息效果
- asp.net鼠标悬停显示信息的方法
- UGUI背包(二)鼠标移动会显示信息框,拖拽物品