unity UGUI对image控件检测鼠标按下和抬起
来源:互联网 发布:淘宝助理在哪下载安装 编辑:程序博客网 时间:2024/06/08 11:30
在UGUI中对image控件检测鼠标按下和抬起使用OnPointerDown和OnPointerUp方法
其中OnPointerDown方法需要类继承IPointerDownHandler接口,而OnPointerUp方法需要类继承IPointerUpHandler接口。
- OnPointerDown方法
public void OnPointerDown(PointerEventData eventData){}
- OnPointerUp方法
public void OnPointerUp(PointerEventData eventData) {}
当鼠标在控件上按下时,会触发OnPointerDown方法;当鼠标抬起时会会触发OnPointerUp方法。
- 当需要使用这两个方法时,需要调用using UnityEngine.EventSystems;
希望完成的效果
鼠标按住“开始”控件并下滑时,检测该控件的位置,当移动的距离超过一半时如果松开,控件会自动移动到背景控件下方,若为超过距离的一半,松开鼠标,控件会返回上端。
1. 为背景控件添加ScrollRect方法,并将content属性设置为开始控件。
2. 设置ScrollRect方法,勾选Vertical,使开始控件只能上下移动。
3. 通过代码控制开始控件的位置,判断不同位置控件的变化。
源代码如下
using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems;public class StartButton : MonoBehaviour,IPointerDownHandler,IPointerUpHandler{ private Transform ButtonStart; private Image ButtonImage; private bool isPointerDown; private Vector3 InitMousePos; void Awake() { ButtonStart = this.transform.Find("Start").transform; ButtonImage=ButtonStart.GetComponent<Image>(); } void Start() { ButtonStart.localPosition = new Vector3(ButtonStart.localPosition.x, 60f, ButtonStart.transform.localPosition.z); InitMousePos = Vector3.zero; } void Update() { UpdateButton(); } //根据Y值来改变游戏状态 private void UpdateButton() { if (isPointerDown) { if (ButtonStart.localPosition.y > 60f || ButtonStart.localPosition.y < -60f) { float newY = (Mathf.Abs(ButtonStart.localPosition.y) / ButtonStart.localPosition.y) * 60f; if (newY <= 0) { ButtonImage.color = new Color(104, 255, 0, 255); } ButtonStart.localPosition = new Vector3(ButtonStart.localPosition.x, newY, ButtonStart.transform.localPosition.z); } } else { float y = ButtonStart.localPosition.y; if (y <= 0) { ButtonStart.localPosition = new Vector3(ButtonStart.localPosition.x, -60f, ButtonStart.transform.localPosition.z); ButtonImage.color = new Color(104, 255, 0, 255); } else { ButtonStart.localPosition = new Vector3(ButtonStart.localPosition.x, 60f, ButtonStart.transform.localPosition.z); } if (ButtonStart.localPosition.y == -60f) { this.GetComponent<ScrollRect>().enabled = false; StartCoroutine(WaitAndSkip()); } } } //控制场景等待、跳转 private IEnumerator WaitAndSkip() { yield return new WaitForSeconds(0.5f); Application.LoadLevel(1); } //检测鼠标按下与抬起 public void OnPointerDown(PointerEventData eventData) { isPointerDown = true; } public void OnPointerUp(PointerEventData eventData) { isPointerDown = false; }}
阅读全文
0 0
- unity UGUI对image控件检测鼠标按下和抬起
- Unity3d UGUI对image控件检测鼠标按下和抬起
- Unity UGUI 检测按钮的按下与抬起
- Unity UGUI Button 按下,抬起,连续按下,鼠标退出事件响应函数
- Unity UGUI Button 按下,抬起,连续按下,鼠标退出事件响应函数
- 鼠标按下和鼠标抬起事件
- Unity uGUI鼠标击穿检测
- [MFC]MFC的BUTTON控件响应鼠标按下和抬起
- 控件的抬起和按下事件
- 【Unity3D UGUI】事件接口(二) 鼠标按下、抬起、点击
- ugui Image 控件多边形碰撞检测
- CxSkinButton增加鼠标按下抬起事件
- 一个手咪按键,检测抬起和按下的思考
- Unity UGUI——UI控件的鼠标快捷操作
- unity ugui对场景中鼠标点击事件的遮挡
- 列表的鼠标按下滚动抬起停止效果
- ugui Image控件介绍
- Unity 鼠标拾取检测 (Mouse Raycast ) UGUi面板随鼠标指针显隐
- Redis适用场合
- 设计模式理论基础
- Python中3+版本运行2+版本程序出现TypeError: a bytes-like object is required, not 'str'之读取PDF中的图片
- 在调用别人的webservice时候,需要生成客户端调用。调用时出现javax.xml.ws.WebServiceException: Unable to create JAXBContext 这个问
- 归并排序
- unity UGUI对image控件检测鼠标按下和抬起
- java
- Xcode6为什么干掉pch(Precompile Prefix Header)&如何添加pch文件
- bzoj 3876 [Ahoi2014]支线剧情
- ubuntu+github 项目托管 更新
- JSTL标签库
- POJ Silver Cow Party
- 加载布局时,未清空父布局
- 树莓派上面安装配置teamviewer