4using System.Collections.Generic;
5using System.Collections;
10public class DragAndDropItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
15 public static GameObject
icon;
22 private static Canvas canvas;
23 private static string canvasName =
"DragAndDropCanvas";
24 private static int canvasSortOrder = 31009;
33 GameObject canvasObj =
new GameObject(canvasName);
34 canvas = canvasObj.AddComponent<Canvas>();
35 canvas.renderMode = RenderMode.ScreenSpaceOverlay;
36 canvas.sortingOrder = canvasSortOrder;
51 icon =
new GameObject();
52 icon.transform.SetParent(canvas.transform);
54 RawImage myImage = GetComponentInChildren<RawImage>();
57 myImage.raycastTarget =
false;
58 RawImage iconImage =
icon.AddComponent<RawImage>();
59 iconImage.raycastTarget =
false;
60 iconImage.texture = myImage.texture;
65 Image myImage2 = GetComponentInChildren<Image>();
66 myImage2.raycastTarget =
false;
68 iconImage.raycastTarget =
false;
69 iconImage.sprite = myImage2.sprite;
73 if (transform.childCount > 0)
75 var child = Instantiate(transform.GetChild(0).gameObject,
icon.transform);
76 if (child.GetComponent<Text>())
78 var rt = child.GetComponent<RectTransform>();
79 rt.anchorMin = Vector2.zero;
80 rt.anchorMax = Vector2.one;
81 rt.pivot = Vector2.one / 2;
85 RectTransform iconRect =
icon.GetComponent<RectTransform>();
87 RectTransform myRect = GetComponent<RectTransform>();
88 iconRect.pivot =
new Vector2(0.5f, 0.5f);
89 iconRect.anchorMin =
new Vector2(0.5f, 0.5f);
90 iconRect.anchorMax =
new Vector2(0.5f, 0.5f);
91 iconRect.sizeDelta =
new Vector2(myRect.rect.width, myRect.rect.height);
104 public void OnDrag(PointerEventData data)
108 icon.transform.position = Input.mousePosition;
124 private void ResetConditions()
145 Image image = GetComponent<Image>();
148 image.raycastTarget = condition;
158 return GetComponentInParent<DragAndDropCell>();
System.Drawing.Image Image
Every item's cell must contain this script
static DragEvent OnItemDragEndEvent
static DragAndDropCell sourceCell
delegate void DragEvent(DragAndDropItem item)
void OnDrag(PointerEventData data)
Every frame on this item drag.
static DragAndDropItem draggedItem
void MakeRaycast(bool condition)
Enable item's raycast.
void OnBeginDrag(PointerEventData eventData)
This item started to drag.
DragAndDropCell GetCell()
Gets DaD cell which contains this item.
void OnEndDrag(PointerEventData eventData)
This item is dropped.
static DragEvent OnItemDragStartEvent