2021년 4학년 1학기 기업연계프로젝트2 컴퓨터소프트웨어공학과 <원광투어팀> 팀장 : 송유진 팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.0 KiB

5 years ago
  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. using UnityEngine.UI;
  4. public class DropObject : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler
  5. {
  6. public MeshRenderer receivingRenderer;
  7. public Color highlightColor = Color.yellow;
  8. private Material rendererMat;
  9. private Color normalColor;
  10. private Texture droppedTexture;
  11. #if UNITY_EDITOR
  12. private void Reset()
  13. {
  14. receivingRenderer = GetComponentInChildren<MeshRenderer>();
  15. }
  16. #endif
  17. public void OnEnable()
  18. {
  19. if (receivingRenderer != null)
  20. {
  21. rendererMat = receivingRenderer.material;
  22. normalColor = rendererMat.color;
  23. receivingRenderer.sharedMaterial = rendererMat;
  24. }
  25. }
  26. public void OnDrop(PointerEventData data)
  27. {
  28. if (rendererMat != null)
  29. {
  30. rendererMat.color = normalColor;
  31. var dropSprite = GetDropSprite(data);
  32. if (dropSprite != null)
  33. {
  34. rendererMat.mainTexture = droppedTexture = dropSprite.texture;
  35. }
  36. }
  37. }
  38. public void OnPointerEnter(PointerEventData data)
  39. {
  40. if (rendererMat != null)
  41. {
  42. var dropSprite = GetDropSprite(data);
  43. if (dropSprite != null)
  44. {
  45. rendererMat.color = highlightColor;
  46. rendererMat.mainTexture = null;
  47. }
  48. }
  49. }
  50. public void OnPointerExit(PointerEventData data)
  51. {
  52. if (rendererMat != null)
  53. {
  54. rendererMat.color = normalColor;
  55. rendererMat.mainTexture = droppedTexture;
  56. }
  57. }
  58. private Sprite GetDropSprite(PointerEventData data)
  59. {
  60. var originalObj = data.pointerDrag;
  61. if (originalObj == null) { return null; }
  62. var dragMe = originalObj.GetComponent<DragImage>();
  63. if (dragMe == null) { return null; }
  64. var srcImage = originalObj.GetComponent<Image>();
  65. if (srcImage == null) { return null; }
  66. return srcImage.sprite;
  67. }
  68. }