需求:

因为同一个公式,需要拖到四个位置,如果不保留原图,往第二个位置拖时,就没的拖了

解决:

在拖动的开始,新建一个替代品

以下是我参照“船到桥头自然沉”兄弟的脚本写的

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;//drag_icon.transform.localScale = new Vector3(1,1,1) ;}}/// <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;drag_icon.transform.GetComponent<RectTransform>().sizeDelta = new Vector2(60.8F, 43.8F);//如果不设置尺寸,生成的替代品尺寸,和原图不一样//防止拖拽结束时,代替品挡住了准备覆盖的对象而使得 OnDrop() 无效CanvasGroup group = drag_icon.AddComponent<CanvasGroup>();group.blocksRaycasts = false;}/// <summary>/// 拖拽结束/// </summary>/// <param name="eventData"></param>public void OnEndDrag(PointerEventData eventData){if(drag_icon.transform.localPosition.y>= -32 && drag_icon.transform.localPosition.y <=21){drag_icon.transform.localPosition = new Vector3(54,-8,0);}else if(drag_icon.transform.localPosition.y >=-130&& drag_icon.transform.localPosition.y <=-81){drag_icon.transform.localPosition = new Vector3(54,-104,0);}else if (drag_icon.transform.localPosition.y >= -235 && drag_icon.transform.localPosition.y <=-117){drag_icon.transform.localPosition = new Vector3(54,-207,0);}else if (drag_icon.transform.localPosition.y >=-338&& drag_icon.transform.localPosition.y <=-283){drag_icon.transform.localPosition = new Vector3(54,-310,0);}else//拖拽结束,销毁代替品{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;elsereturn false;}
}

UGUI图片拖拽_保留原图相关推荐

  1. 安卓开发仿微信图片拖拽_仿微信朋友圈发表图片拖拽和删除功能

    原标题:仿微信朋友圈发表图片拖拽和删除功能 中国联通在香港公布了上市公司2017年中期业绩.2017年上半年,公司主要业绩指标持续向好,收入稳步回升,服务收入达到人民币1,241.1亿元,同比增长3. ...

  2. 安卓开发仿微信图片拖拽_使用Android 模仿微信朋友圈图片拖拽返回

    1概述 目前的app的动画效果是越来越炫了,很多主流app的图片预览返回都有类似功能,比较常见的是ios自带相册,微信朋友圈等等.自己项目中也有类似功能,最近整理了一下这个功能的代码,做个笔记记录,有 ...

  3. android可拖拽九宫格,微信小程序实现九宫格图片拖拽

    (在真机上的效果就不演示了,是差不多的) 实现思路 布局 在这里运用到了微信小程序的moveable-area和moveable-view两个标签. moveable-area是可拖拽的区域,需要设置 ...

  4. html设置图片不可拖拽,js css3实现图片拖拽效果

    本文实例为大家分享了css3实现图片拖拽效果的具体代码,供大家参考,具体内容如下 body{ text-align: center; } .container{ display: flex; just ...

  5. html js点击字图片下拉,JavaScript实现文字与图片拖拽效果的方法

    本文实例讲述了JavaScript实现文字与图片拖拽效果的方法.分享给大家供大家参考.具体实现方法如下: JavaScript实现文字与图片的拖拽效果 *{padding:0;margin:0;} . ...

  6. 使用jQuery开发一个基于HTML5的漂亮图片拖拽上传web应用

    昨天我们介绍了一款HTML5文件上传的jQuery插件:jQuery HTML5 uploader,今天我们将开发一个简单的叫upload center的图片上传程序,允许用户使用拖拽方式来上传电脑上 ...

  7. 安卓开发仿微信图片拖拽_Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  8. Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  9. 类似新浪微博和google图片的HTML5实现图片拖拽上传功能

    2019独角兽企业重金招聘Python工程师标准>>> 来源: http://www.lovesunlife.com/?p=315 这篇文章对google图片为蓝本就拖拽上传功能分析 ...

最新文章

  1. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)
  2. JDK11使用IDEA,配置JavaFX
  3. 【干货】一个产品经理眼中的云计算:前生今世和未来
  4. 读入两个字符串java_编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个strAdd函数...
  5. Docker ElK安装部署使用教程
  6. Form_Form Builder Export导出为Excel(案例)
  7. 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(二)
  8. 利用xsl和xml转html没有内容_HTML文档元素的属性介绍
  9. php sql 中文编码,php sql如何设置编码
  10. jwt如何加盐_JWT 基础教程
  11. 国科大杨力祥老师操作系统答案总结
  12. 分布式计算、统计学习与ADMM算法
  13. xtwpro2编程器_zadig v2.4编程软件下载|XTW100编程器软件(附USB驱动) - 驱动无忧
  14. Python游戏篇:细节之大型游戏爆炸效果(附代码)
  15. 【VirtualAPP 双开系列06】启动加载第三方 APP 过程
  16. HTTP代理服务器的实现
  17. debian11安装aria2以及ariaNg
  18. 最易/难学习的编程语言榜单出炉,C++最难学?
  19. MySQL8.0.27版本于2021年10月19日正式GA和新功能介绍
  20. 基于对抗训练的轨迹预测半监督算法(美国西北大学和加州尔湾分校)

热门文章

  1. Java---注解、类加载器-加强-实现运行任意目录下class中加了@MyTest的空参方法
  2. GCN数据集Cora、Citeseer、Pubmed文件分析
  3. Android开发资源分享合集
  4. 计算机ps作品大赛奖品,全国创新杯说课大赛计算机应用基础类一等奖作品:ps动态图像制作说课课件...
  5. react-native app:compileDebugJavaWithJavac错误解决
  6. python求函数的根_在Python中寻找函数的根
  7. dom4j中文API
  8. wincc 7.4 安装时 SQL 2014 报错,无法继续安装
  9. Excel收纳箱:返回选中区域的行数和列数
  10. IOS- 即时通讯原理,使用XMPPFramework实现即时通信