1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System.Reflection;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- public class DropMe : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler
- {
- public Image containerImage;
- public Image receivingImage;
- private Color normalColor;
- public Color highlightColor = Color.yellow;
-
- public void OnEnable ()
- {
- if (containerImage != null)
- normalColor = containerImage.color;
- }
-
- public void OnDrop(PointerEventData data)
- {
- containerImage.color = normalColor;
-
- if (receivingImage == null)
- return;
-
- Sprite dropSprite = GetDropSprite (data);
- if (dropSprite != null)
- receivingImage.overrideSprite = dropSprite;
- }
- public void OnPointerEnter(PointerEventData data)
- {
- if (containerImage == null)
- return;
-
- Sprite dropSprite = GetDropSprite (data);
- if (dropSprite != null)
- containerImage.color = highlightColor;
- }
- public void OnPointerExit(PointerEventData data)
- {
- if (containerImage == null)
- return;
-
- containerImage.color = normalColor;
- }
-
- private Sprite GetDropSprite(PointerEventData data)
- {
- var originalObj = data.pointerDrag;
- if (originalObj == null)
- return null;
-
- var dragMe = originalObj.GetComponent<DragMe>();
- if (dragMe == null)
- return null;
-
- var srcImage = originalObj.GetComponent<Image>();
- if (srcImage == null)
- return null;
-
- return srcImage.sprite;
- }
- }
|