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

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class DropObject : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler
{
public MeshRenderer receivingRenderer;
public Color highlightColor = Color.yellow;
private Material rendererMat;
private Color normalColor;
private Texture droppedTexture;
#if UNITY_EDITOR
private void Reset()
{
receivingRenderer = GetComponentInChildren<MeshRenderer>();
}
#endif
public void OnEnable()
{
if (receivingRenderer != null)
{
rendererMat = receivingRenderer.material;
normalColor = rendererMat.color;
receivingRenderer.sharedMaterial = rendererMat;
}
}
public void OnDrop(PointerEventData data)
{
if (rendererMat != null)
{
rendererMat.color = normalColor;
var dropSprite = GetDropSprite(data);
if (dropSprite != null)
{
rendererMat.mainTexture = droppedTexture = dropSprite.texture;
}
}
}
public void OnPointerEnter(PointerEventData data)
{
if (rendererMat != null)
{
var dropSprite = GetDropSprite(data);
if (dropSprite != null)
{
rendererMat.color = highlightColor;
rendererMat.mainTexture = null;
}
}
}
public void OnPointerExit(PointerEventData data)
{
if (rendererMat != null)
{
rendererMat.color = normalColor;
rendererMat.mainTexture = droppedTexture;
}
}
private Sprite GetDropSprite(PointerEventData data)
{
var originalObj = data.pointerDrag;
if (originalObj == null) { return null; }
var dragMe = originalObj.GetComponent<DragImage>();
if (dragMe == null) { return null; }
var srcImage = originalObj.GetComponent<Image>();
if (srcImage == null) { return null; }
return srcImage.sprite;
}
}