当前位置: 首页 > news >正文

做羊毛毡的网站2024年度关键词

做羊毛毡的网站,2024年度关键词,手机网站建设的公司排名,十大网站建设文章目录 👉一、背景👉二、效果图👉三、原理👉四、核心代码👉五,总结 👉一、背景 之前做PC项目时常常有面板拖拽移动的需求,今天总结封装一下,做成一个随时随地可复用的…

文章目录

      • 👉一、背景
      • 👉二、效果图
      • 👉三、原理
      • 👉四、核心代码
      • 👉五,总结

👉一、背景

之前做PC项目时常常有面板拖拽移动的需求,今天总结封装一下,做成一个随时随地可复用的拖拽面板功能。

👉二、效果图

请添加图片描述

👉三、原理

实现原理也非常简单。首先继承UI事件系统下的两个接口:

IBeginDragHandler, IDragHandler

进而实现两个接口方法即可,主要是在开始拖拽事件里面,记录鼠标按下的坐标mMouseDownPosition和面板的初始坐标mPanelOriginPosition;然后在拖拽过程中鼠标在Canvas下的坐标,减去开始拖拽的鼠标坐标得到一个鼠标坐标偏移量,加上原始面板坐标得到一个新的拖拽位置的坐标,进行坐标赋值即可。

👉四、核心代码

using UnityEngine;
using UnityEngine.EventSystems;namespace Utility
{/// <summary>/// UGUI面板的拖拽移动功能/// </summary>[RequireComponent(typeof(RectTransform))]public class DragPanel : MonoBehaviour, IBeginDragHandler, IDragHandler{/// <summary>/// 静态方法,提供动态绑定拖拽面板的接口/// </summary>/// <param name="rectTransform"></param>/// <returns></returns>public static DragPanel Get(RectTransform rectTransform){DragPanel dragPanel = rectTransform.gameObject.GetComponent<DragPanel>();if (dragPanel == null){dragPanel = rectTransform.gameObject.AddComponent<DragPanel>();}return dragPanel;}/// <summary>/// 当前拖拽面板的根节点,一般是Canvas/// </summary>private RectTransform canvasRect;private Canvas rootCanvas;private Camera uiCam;/// <summary>/// 是否允许拖拽/// </summary>private bool isAllowDrag;private Vector3 mMouseDownPosition;private Vector3 mPanelOriginPosition;private void Awake(){Transform root = transform.root;if (root != null){rootCanvas = root.GetComponent<Canvas>();canvasRect = root as RectTransform;if (rootCanvas.renderMode == RenderMode.ScreenSpaceCamera){uiCam = rootCanvas.worldCamera;}}isAllowDrag = rootCanvas != null;}public void OnBeginDrag(PointerEventData eventData){if (!isAllowDrag) return;RectTransformUtility.ScreenPointToWorldPointInRectangle(canvasRect,Input.mousePosition,uiCam,out mMouseDownPosition);mPanelOriginPosition = transform.position;}public void OnDrag(PointerEventData eventData){if (!isAllowDrag) return;Vector3 currentMousePosInUGUI;RectTransformUtility.ScreenPointToWorldPointInRectangle(canvasRect,Input.mousePosition,uiCam,out currentMousePosInUGUI);transform.position = mPanelOriginPosition + (currentMousePosInUGUI - mMouseDownPosition);}}
}

食用方法:

  1. 直接将DragPanel脚本拖拽赋值给需要拖拽的UI面板。
    在这里插入图片描述

  2. 如果需要拖拽功能的UI面板多,可使用动态绑定方法,该脚本提供了一个Get方法,参数为需要拖拽的对象的RectTransform组件。
    代码动态绑定方法如下:

			RectTransform rectTransform = xxx;//需要赋值,对象不能为空哦。DragPanel.Get(rectTransform);

👉五,总结

后续可以进行优化的地方:

  • 鼠标拖拽移动可以是用平滑移动方法
  • 对拖拽范围进行限制
http://www.ds6.com.cn/news/95545.html

相关文章:

  • 做任务刷单的网站是真的吗山东关键词优化联系电话
  • 网站建设的作用有哪些seo费用
  • 河北seo推广公司公司网站seo外包
  • 网站设计用什么做搜狗引擎搜索
  • 网站开发过程前端后端百度指数有什么参考意义
  • android 旅游网站开发网络搜索关键词
  • 静态网站开发实训的目的快推广app下载
  • 自己的网站做弹出广告上海百度分公司电话
  • 重庆网站建设公司招聘今天刚刚发生的新闻
  • 怎么把自己做的网站放到网上必应站长平台
  • 找个人制作网页的网站石家庄最新消息今天
  • 免费域名做网站百度网站首页
  • 自己本地可以做网站服务器google adwords
  • 最好的网站开发工具太原seo优化
  • 靠谱的网络建站服务热线aso优化软件
  • 河北网站建设公司如何获取网站的seo
  • 龙岗沙湾社区网站建设中山谷歌推广
  • 研发地网站建设网址外链平台
  • 网站建设回龙观西安百度关键词优化
  • 庆阳市西峰区做网站seo优化师培训
  • 安卓移动网站开发详解怎么在百度上做广告
  • 网站增加关键词全网营销推广系统
  • 网站建网站建设如何优化关键词的方法
  • 做企业网站时需要注意哪些地方app运营方案策划
  • 杭州网站做的好公司嘉兴新站seo外包
  • 羞差视频免费首入口网页杭州谷歌seo公司
  • 网站不备案怎么办理广州网站建设推广专家
  • 做一人网站要多少钱中企动力做网站推广靠谱吗
  • 树莓派wordpress速度如何长沙seo智优营家
  • 上每网站建设百度pc网页版入口