unityUGUI拖拽物品的实现方法
来源:互联网 发布:阿里数据平台概念 编辑:程序博客网 时间:2024/05/21 12:47
/*
该脚本绑在要拖拽的物体上
*/
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;//要想用拖拽事件必须导入EventSystems
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;//要想用拖拽事件必须导入EventSystems
using UnityEngine.UI;
public class Drag2 : MonoBehaviour ,IBeginDragHandler, IDragHandler,IEndDragHandler{//实现开始拖拽,拖拽中和结束拖拽3个事件接口
public Canvas canv;//场景中的canvas
private GameObject dragObj;//拖拽生成的物品
private RectTransform dragObjRect;//生成物品的方向等信息
private GameObject dragObj;//拖拽生成的物品
private RectTransform dragObjRect;//生成物品的方向等信息
void Start()
{
dragObjRect = canv.transform as RectTransform;
}
{
dragObjRect = canv.transform as RectTransform;
}
public void OnBeginDrag(PointerEventData eventData)//开始拖拽
{
dragObj = new GameObject("icon");
dragObj.transform.SetParent(canv.transform, false);//让这个物体在canvas上,此时物品在屏幕中心
{
dragObj = new GameObject("icon");
dragObj.transform.SetParent(canv.transform, false);//让这个物体在canvas上,此时物品在屏幕中心
dragObj.transform.SetAsLastSibling();//将生成的物体设为canvas的最后一个子物体,一般来说最后一个子物体是可操作的
Image img = dragObj.AddComponent<Image>();//给生成的拖拽物体添加一个Image组件并获得Image组件的控制权
img.raycastTarget = false;//让该物体不接受鼠标的照射,目的是底下的物品也能操作
img.sprite = GetComponent<Image>().sprite;//让生成物体的图片为按钮的图片
dragObj.GetComponent<RectTransform>().sizeDelta =
new Vector2(Screen.height * 0.1f, Screen.height * 0.1f);//设置新生成物品的尺寸
new Vector2(Screen.height * 0.1f, Screen.height * 0.1f);//设置新生成物品的尺寸
ObjFollowMouse(eventData);//让生成的物体跟随鼠标
}
}
public void OnDrag(PointerEventData eventData)//拖拽中
{
ObjFollowMouse(eventData);//让生成的物体跟随鼠标
}
{
ObjFollowMouse(eventData);//让生成的物体跟随鼠标
}
public void OnEndDrag(PointerEventData eventData)
{
if (dragObj != null)
{
Destroy(dragObj);//拖拽结束后销毁生成的物体
}
}//拖拽结束
{
if (dragObj != null)
{
Destroy(dragObj);//拖拽结束后销毁生成的物体
}
}//拖拽结束
private void ObjFollowMouse(PointerEventData eventData)
{
if (dragObj != null)//检测生成的物体是否为空,保险起见
{
RectTransform rc = dragObj.GetComponent<RectTransform>();//得到生成物品的控制权
Vector3 globalMousePos;
{
if (dragObj != null)//检测生成的物体是否为空,保险起见
{
RectTransform rc = dragObj.GetComponent<RectTransform>();//得到生成物品的控制权
Vector3 globalMousePos;
if (RectTransformUtility.ScreenPointToWorldPointInRectangle
(dragObjRect, eventData.position, eventData.pressEventCamera, out globalMousePos))
{
rc.position = globalMousePos;
rc.rotation = dragObjRect.rotation;
}
}
(dragObjRect, eventData.position, eventData.pressEventCamera, out globalMousePos))
{
rc.position = globalMousePos;
rc.rotation = dragObjRect.rotation;
}
}
}
}
}
/*
该脚本绑在拖拽结束后,要落入的物体
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class Drop : MonoBehaviour, IDropHandler{
public void OnDrop(PointerEventData eventData)
{
{
if (eventData.pointerDrag!= null)
{
Image img = eventData.pointerDrag.GetComponent<Image>();
if (img != null)
{
GetComponent<Image>().sprite = img.sprite;
GetComponent<Image>().color = new Color(1, 1, 1, 1);//我刚开始把图片设为了透明
}
}
}
{
Image img = eventData.pointerDrag.GetComponent<Image>();
if (img != null)
{
GetComponent<Image>().sprite = img.sprite;
GetComponent<Image>().color = new Color(1, 1, 1, 1);//我刚开始把图片设为了透明
}
}
}
}
0 0
- unityUGUI拖拽物品的实现方法
- unity实现物品或技能图标的拖拽功能
- NGUI的物品拖拽
- Unity3D鼠标选中物品并拖动物品的方法
- Unity3D鼠标选中物品并拖动物品的方法
- Unity3D鼠标选中物品并拖动物品的方法
- Mahout实现一个基于性别的物品相似度量的方法GenderItemSimilarity
- Knn实现简单的物品推荐
- 物品拖拽[u3d_rpg游戏开发之物品管理(五)]
- unity 鼠标拖拽物品
- 关于unityUGUI里面的image和text组件的优化
- unityUGUI关于Text字体不清晰的解决方法
- 一个简单有效的用鼠标选中物品并拖动物品的方法
- 生还者+感染者+物品的轮廓颜色修改方法
- eShop电子商城的SSH实现的物品模块(1)Bean
- 基于物品的协同过滤ItemCF的mapreduce实现
- 基于物品的协同过滤ItemCF的mapreduce实现
- MapReduce:基于物品的协同过滤算法的MapReduce实现
- [noip模拟]四道题 noip2010 机器翻译 noip2010 乌龟棋 noip 关押罪犯 noip 引水入城
- 仅需 90 秒,了解 WSS (主流 SOA 安全工具)
- CMT跟踪算法学习笔记
- 如何写出高质量的代码
- 使double保留两位小数的多方法 java保留两位小数
- unityUGUI拖拽物品的实现方法
- [省选] [最小生成树] [HLOI2016] 农场修路
- postman报415(Unsupported Media Type)不支持的类型异常
- CSU 1505——酷酷的单词
- 使用xUtils3和RandomAccessFile来实现文件的分片上传
- CSS3动画使用方法实例
- 对象数组&对象成员
- 无线通信基础资料总结
- ubuntu14.04下安装caffe 仅cpu python接口