背包的拖动和交换
来源:互联网 发布:linux 最新内核 编辑:程序博客网 时间:2024/06/15 21:07
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Move : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler,IDropHandler
{
public RectTransform canvas;
Vector3 local;
Vector3 offset;
GameObject go;
public GameObject currobj;
// Use this for initialization
GameObject CreateObject(GameObject go,RectTransform rec)
{
GameObject g = new GameObject("game",typeof(Image));
g.transform.parent = rec;
g.GetComponent<Image>().sprite = go.GetComponent<Image>().sprite;
g.transform.position = go.transform.position;
g.GetComponent<Image>().raycastTarget = false;
g.GetComponent<RectTransform>().sizeDelta = go.GetComponent<RectTransform>().sizeDelta;
StartCoroutine(MaxAndMin(g.GetComponent<RectTransform>()));
return g;
}
private IEnumerator MaxAndMin(RectTransform rectTransform)
{
Vector2 scale = rectTransform.sizeDelta;
rectTransform.sizeDelta *= 1.3f;
yield return new WaitForSeconds(0.15f);
rectTransform.sizeDelta = scale;
}
public void OnBeginDrag(PointerEventData eventData)
{
go = CreateObject(gameObject,canvas);
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(canvas.GetComponent<RectTransform>(), Input.mousePosition, eventData.enterEventCamera, out local))
{
offset = transform.position - local;
}
}
public void OnDrag(PointerEventData eventData)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, LayerMask.GetMask("Plane")))
{
currobj.transform.position = hit.point;
}
if (go != null)
{
go.transform.position = Input.mousePosition+offset;
}
}
public void OnEndDrag(PointerEventData eventData)
{
if (go != null)
{
Destroy(go);
go = null;
}
}
public void OnDrop(PointerEventData eventData)
{
Sprite temp = new Sprite();
temp = eventData.pointerDrag.GetComponent<Image>().sprite;
eventData.pointerDrag.GetComponent<Image>().sprite = gameObject.GetComponent<Image>().sprite;
gameObject.GetComponent<Image>().sprite = temp;
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Move : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler,IDropHandler
{
public RectTransform canvas;
Vector3 local;
Vector3 offset;
GameObject go;
public GameObject currobj;
// Use this for initialization
GameObject CreateObject(GameObject go,RectTransform rec)
{
GameObject g = new GameObject("game",typeof(Image));
g.transform.parent = rec;
g.GetComponent<Image>().sprite = go.GetComponent<Image>().sprite;
g.transform.position = go.transform.position;
g.GetComponent<Image>().raycastTarget = false;
g.GetComponent<RectTransform>().sizeDelta = go.GetComponent<RectTransform>().sizeDelta;
StartCoroutine(MaxAndMin(g.GetComponent<RectTransform>()));
return g;
}
private IEnumerator MaxAndMin(RectTransform rectTransform)
{
Vector2 scale = rectTransform.sizeDelta;
rectTransform.sizeDelta *= 1.3f;
yield return new WaitForSeconds(0.15f);
rectTransform.sizeDelta = scale;
}
public void OnBeginDrag(PointerEventData eventData)
{
go = CreateObject(gameObject,canvas);
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(canvas.GetComponent<RectTransform>(), Input.mousePosition, eventData.enterEventCamera, out local))
{
offset = transform.position - local;
}
}
public void OnDrag(PointerEventData eventData)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, LayerMask.GetMask("Plane")))
{
currobj.transform.position = hit.point;
}
if (go != null)
{
go.transform.position = Input.mousePosition+offset;
}
}
public void OnEndDrag(PointerEventData eventData)
{
if (go != null)
{
Destroy(go);
go = null;
}
}
public void OnDrop(PointerEventData eventData)
{
Sprite temp = new Sprite();
temp = eventData.pointerDrag.GetComponent<Image>().sprite;
eventData.pointerDrag.GetComponent<Image>().sprite = gameObject.GetComponent<Image>().sprite;
gameObject.GetComponent<Image>().sprite = temp;
}
}
阅读全文
0 0
- 背包的拖动和交换
- 可以拖动交换item位置的GridView
- 可以拖动交换item位置的GridView
- UICollectionView的cell拖动交换位置
- cocos2d-x如何解决背包物品拖动和翻页操作的冲突
- Unity3d 简单的背包系统(物品交换)
- 拖动交换单元格内容
- 拖动交换单元格内容
- listview长按后拖动item交换位置的帮助类
- Android使用ItemTouchHelper实现RecyclerView的item拖动位置交换
- Unity中实现背包物品拖动和更换位置
- 值交换和字符交换的对比
- 电路交换、报文交换和分组交换的异同
- RecyclerView的拖动和滑动
- 【背包总结】【交换维度】
- 背包系统中,交换两个物品的位置
- 路由和交换的基本概念
- 路由和交换的基本概念
- ElasticSearch6.0配置IK分词器
- java 基本数据类型和引用数据类型
- Ubuntu 16.04下搭建Web服务器(MySQL+PHP+Apache) 记录
- 学习网站
- 【剑指Offer】斐波那契数列及其延伸问题——JavaScript实现
- 背包的拖动和交换
- Revit二次开发_在Revit启动后创建Tab
- java中的注解
- 听课(上)
- 第20篇
- Win10 64位 + VS2015 +VTK7.0.0 +PCL1.8.0 +QT5.7的配置
- Mysql5.5&Mysql5.6&Mysql5.7特性
- python,mysqldb,web.py安装和配置
- ETH