博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
鼠标拖动2D物体(图片)
阅读量:7051 次
发布时间:2019-06-28

本文共 2938 字,大约阅读时间需要 9 分钟。

using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;[RequireComponent(typeof(Image))]public class DragMe : MonoBehaviour, IBeginDragHandler, IDragHandler,IEndDragHandler{    public bool dragOnSurfaces = true;    public GameObject m_DraggingIcon;    private RectTransform m_DraggingPlane;    public void OnBeginDrag(PointerEventData eventData)    {        var canvas = FindInParents
(gameObject); if (canvas == null) return; // We have clicked something that can be dragged. // What we want to do is create an icon for this. m_DraggingIcon = new GameObject("icon"); m_DraggingIcon.transform.SetParent(canvas.transform, false); m_DraggingIcon.transform.SetAsLastSibling(); var image = m_DraggingIcon.AddComponent
(); // The icon will be under the cursor. // We want it to be ignored by the event system. CanvasGroup group = m_DraggingIcon.AddComponent
(); group.blocksRaycasts = false; image.sprite = GetComponent
().sprite; image.SetNativeSize(); if (dragOnSurfaces) { m_DraggingPlane = transform as RectTransform; } else { m_DraggingPlane = canvas.transform as RectTransform; } SetDraggedPosition(eventData); } public void OnDrag(PointerEventData data) { if (m_DraggingIcon != null) { SetDraggedPosition(data); } transform.position = m_DraggingIcon.transform.position; m_DraggingIcon.SetActive(false); } private void SetDraggedPosition(PointerEventData data) { if (dragOnSurfaces && data.pointerEnter != null && data.pointerEnter.transform as RectTransform != null) { m_DraggingPlane = data.pointerEnter.transform as RectTransform; } var rt = m_DraggingIcon.GetComponent
(); Vector3 globalMousePos; if (RectTransformUtility.ScreenPointToWorldPointInRectangle(m_DraggingPlane, data.position, data.pressEventCamera, out globalMousePos)) { rt.position = globalMousePos; rt.rotation = m_DraggingPlane.rotation; } } public void OnEndDrag(PointerEventData eventData) { if (m_DraggingIcon != null) Destroy(m_DraggingIcon); Debug.Log("万用表的位置"+transform.position); } static public T FindInParents
(GameObject go) where T : Component { if (go == null) { return null; } var comp = go.GetComponent
(); if (comp != null) { return comp; } Transform t = go.transform.parent; while (t != null && comp == null) { comp = t.gameObject.GetComponent
(); t = t.parent; } return comp; } }

 

转载于:https://www.cnblogs.com/Cocomo/p/5753345.html

你可能感兴趣的文章
Java第九次作业
查看>>
JS动态获取 Url 参数
查看>>
RSA被顶级分析公司评为安全信息和事件管理领导厂商
查看>>
.Net Discovery系“.NET技术”列之-深入理解平台机制与性能影响 (中)
查看>>
Amazon SES SPF和DKIM设置教程
查看>>
【简讯】微软拟发布开源VB6
查看>>
轻量级的Web服务器Nginx0.9.0 开发版发布
查看>>
1.文件重命名工具
查看>>
【java】json格式解析
查看>>
4_1 wp8数据绑定与独立存储空间[wp8特色开发与编程技巧]
查看>>
Linux开始结束ping命令
查看>>
openfire invalid sid 404
查看>>
开源一款私藏Management Studio插件,ProjkyAddin,送给所有使用SQLServer的园友们
查看>>
jQuery判断checkbox是否选中的3种方法
查看>>
在sublime Text 3上编写并运行java程序
查看>>
LinkedList源码分析
查看>>
【算法介绍】哈希排序算法
查看>>
js数组操作(增、删、改、查)
查看>>
UpdatePanel and JQuery Plugin
查看>>
centos5.7下的kdump
查看>>