public class L17 : MonoBehaviour,IDragHandler
{
public Image img;
// Start is called before the first frame update
void Start()
{
//使用遮罩
//在父对象上挂载Mask组件就可遮罩其子对象
//子对象需要勾选Maskable
//模型显示在UI之前
//方法一:直接用摄像机渲染3D物体,需要Canvas的渲染不是Overlay
//方法二:将3D物体渲染在图片上,通过图片显示
//粒子特效显示在UI前,类似3D物体
//在Camera模式下,可以在粒子组件的Renderer相关参数中修改排序层,使其始终显示在UI之前不受Z轴影响
//让异形按钮能够准确点击
//方法一:用子对象拼凑一个不规则图形
//方法二:通过代码改变图片的透明度的响应阈值
//1.修改图片参数,开启Read/Write Enable
//2.通过代码修改图片的响应阈值
//像素的alpha小于该值就不会被射线检测
img.alphaHitTestMinimumThreshold = 0.1f;
}
public void OnDrag(PointerEventData eventData)
{
//将屏幕坐标转换为UI本地坐标系
//RectTransformUtility.ScreenPointToLocalPointInRectangle
//参数1:相对父对象
//参数2:屏幕点
//参数3:摄像机
//参数4:最终得到的点
//一般配合拖曳事件使用
Vector2 nowPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
transform.parent as RectTransform,
eventData.position,
eventData.enterEventCamera,
out nowPos);
transform.localPosition = nowPos;
}
}