Ugui中的图片拖拽
来源:互联网 发布:php use找不到 编辑:程序博客网 时间:2024/05/16 06:15
using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems;public class UGUIForDrag : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler, IDropHandler{ //创建一个Gameobject作为拖拽时被拖拽对象的代替品 private GameObject drag_icon; //该物体是否可以进行拖拽 public bool isCanDrug; //匹配信息 public string matching; /// <summary> /// 拖拽时为新生成的拖拽图片进行位置更新 /// </summary> /// <param name="eventData"></param> public void OnDrag(PointerEventData eventData) { if (!isCanDrug) return; //并将拖拽时的坐标给予被拖拽对象的代替品 Vector3 pos; if (RectTransformUtility.ScreenPointToWorldPointInRectangle(drag_icon.GetComponent<RectTransform>(), eventData.position, eventData.pressEventCamera, out pos)) { drag_icon.transform.position = pos; } } /// <summary> /// 拖拽图片初始 /// </summary> /// <param name="eventData"></param> public void OnBeginDrag(PointerEventData eventData) { if (!isCanDrug) return; //代替品实例化 drag_icon = new GameObject("icon"); drag_icon.transform.SetParent(GameObject.Find("Canvas").transform, false); drag_icon.AddComponent<RectTransform>(); var img = drag_icon.AddComponent<Image>(); img.sprite = this.GetComponent<Image>().sprite; //防止拖拽结束时,代替品挡住了准备覆盖的对象而使得 OnDrop() 无效 CanvasGroup group = drag_icon.AddComponent<CanvasGroup>(); group.blocksRaycasts = false; } /// <summary> /// 拖拽结束 /// </summary> /// <param name="eventData"></param> public void OnEndDrag(PointerEventData eventData) { //拖拽结束,销毁代替品 if (drag_icon) { Destroy(drag_icon); } } /// <summary> /// 拖拽到当前图片上 /// </summary> /// <param name="eventData"></param> public void OnDrop(PointerEventData eventData) { //根据代替品的信息,改变当前对象的Sprite。 var obj = eventData.pointerDrag; UGUIForDrag drag = obj.GetComponent<UGUIForDrag>(); //检测拖拽物品是否是可拖拽的 if (drag != null) { if (!drag.isCanDrug) { return; } } //信息匹配 if (IsSameMessage(drag)) { Debug.Log("信息匹配成功"); } else { Debug.Log("信息匹配失败"); return; } this.GetComponent<Image>().sprite = obj.GetComponent<Image>().sprite; } /// <summary> /// 信息匹配 /// </summary> /// <param name="message"></param> /// <returns></returns> bool IsSameMessage(UGUIForDrag message) { if (message.matching == matching) return true; else return false; }}
阅读全文
0 0
- Ugui中的图片拖拽
- Ugui中的图片拖拽
- 【UGUI】UGUI 拖拽图片
- UGUI Image图片拖拽变成模型
- ugui拖拽应用
- UGUI--拖拽交换
- UGUI 加载图片
- UGUI 图片查看器
- ugui Sprite更换图片
- Unity UGUI 图片模糊
- u3d UGUI 拖动图片
- UGUI动态更换图片
- UGUI图片资源压缩
- UGUI背包实现详解之一UGUI精准拖拽
- [UGUI功能]UGUI实现按住拖拽UI功能
- UGUI中的DrawCall
- UGUI中的事件系统
- untiy3d.UGUI.button图片切换
- Mysql常用命令
- JVM实用参数(五)新生代垃圾回收
- linux服务器被攻击,网络卡顿
- 图的遍历算法
- 2017年12月6日 学习笔记(JAVA面试题)
- Ugui中的图片拖拽
- js获取对象属性个数
- 关于Interface的一些不知道的shiqing
- MySQL学习总结3
- JVM实用参数(六)-吞吐量收集器
- 《openSMILE用户手册》第2章 (2) openSMILE 第一次特征提取
- 不同浏览器上中文文件名的下载/导出乱码问题(Java)
- find -exec 与xargs 区别
- npm install出现"Unexpected end of JSON input while parsing near"错误解决方法