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

海西高端网站建设价格浦东新区网站优化推广

海西高端网站建设价格,浦东新区网站优化推广,什么是网络营销?什么是创新创业?两者有什么关系?,礼物说网站模板描述 点击鼠标左键在屏幕上绘制线段 准备 VertexHelper 网格绘制工具类向量、叉乘RectTransformUtility.ScreenPointToLocalPointInRectangleSetVerticesDirtyOnPopulateMesh 思路 鼠标按下,记录线段起点;鼠标持续按下,记录鼠标当前帧的…

描述

点击鼠标左键在屏幕上绘制线段

准备

  1. VertexHelper 网格绘制工具类
  2. 向量、叉乘
  3. RectTransformUtility.ScreenPointToLocalPointInRectangle
  4. SetVerticesDirty
  5. OnPopulateMesh

思路

  1. 鼠标按下,记录线段起点;
  2. 鼠标持续按下,记录鼠标当前帧的移动向量;
  3. 使用叉乘获取垂直与移动向量的单位向量;
  4. 根据设置的宽度获取四个顶点;设置顶点脏数据,更新网格

示例

新建脚本,继承MaskableGraphic;
创建一个Image,移除Image组件,添加新建脚本。
脚本内容如下:

引入命名空间

using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

属性

private List<List<UIVertex>> vertexList = new List<List<UIVertex>>();//缓存线段上的网格顶点
private Vector3 lastPoint;//上一帧的点击点
private Vector3 lastLeftPoint;
private Vector3 lastRightPoint;
bool isNewLine;//绘制新的线段
[SerializeField] private float lineWidth = 4f;//线段宽度

方法 绘制网格

protected override void OnPopulateMesh(VertexHelper vh)//绘制网格
{vh.Clear();for (int i = 0; i < vertexList.Count; i++)vh.AddUIVertexQuad(vertexList[i].ToArray());
}

方法 屏幕坐标转为本地坐标

Vector2 ScreenPointToLocalPoint(Vector2 mousePoint)
{var Rect = GetComponent<RectTransform>();Vector2 result = Vector2.zero;switch (canvas.renderMode){case RenderMode.ScreenSpaceOverlay:RectTransformUtility.ScreenPointToLocalPointInRectangle(Rect, mousePoint, null, out result);break;case RenderMode.ScreenSpaceCamera:RectTransformUtility.ScreenPointToLocalPointInRectangle(Rect, mousePoint, canvas.worldCamera, out result);break;case RenderMode.WorldSpace:RectTransformUtility.ScreenPointToLocalPointInRectangle(Rect, mousePoint, canvas.worldCamera, out result);break;}return result;
}

方法 设置网格顶点

private void Update()
{if (Input.GetMouseButtonDown(0))//按下鼠标坐标表示 绘制新的线段{lastPoint = ScreenPointToLocalPoint(Input.mousePosition);//屏幕点转换到当前recttransform上的点isNewLine = true;vertexList.Clear();//清除上一次绘制的线段 若要保留 可不清除}else{if (Input.GetMouseButton(0)){Vector3 currentPoint = ScreenPointToLocalPoint(Input.mousePosition);Vector3 dir = currentPoint - lastPoint;//移动向量if (dir.magnitude < 10)//移动量过小 不绘制网格return;Vector3 normal = Vector3.Cross(dir.normalized, transform.forward);//移动向量和当前ui的朝向 进行叉乘if (isNewLine){isNewLine = false;lastLeftPoint = lastPoint + normal * lineWidth;//绘制新的线段时 作为左侧起点lastRightPoint = lastPoint - normal * lineWidth;}Vector3 leftPoint = currentPoint + normal * lineWidth;//当前线段的左侧终点Vector3 rightPoint = currentPoint - normal * lineWidth;List<UIVertex> ver = new List<UIVertex>();UIVertex uIVertex = new UIVertex();//网格顶点列表uIVertex.position = lastLeftPoint;uIVertex.color = color;ver.Add(uIVertex);UIVertex uIVertex2 = new UIVertex();uIVertex2.position = lastRightPoint;uIVertex2.color = color;ver.Add(uIVertex2);UIVertex uIVertex3 = new UIVertex();uIVertex3.position = rightPoint;uIVertex3.color = color;ver.Add(uIVertex3);UIVertex uIVertex4 = new UIVertex();uIVertex4.position = leftPoint;uIVertex4.color = color;ver.Add(uIVertex4);vertexList.Add(ver);lastLeftPoint = leftPoint;//更新起点 当前帧的终点作为下一帧的起点lastRightPoint = rightPoint;lastPoint = currentPoint;SetVerticesDirty();//设置顶点脏数据 更新网格}}
}
http://www.yayakq.cn/news/748057/

相关文章:

  • wordpress 菜单栏阜阳网站优化
  • 中国纪检监察报记者电话资源企业网站排名优化价格
  • wordpress 企业网站模板国内企业网站设计公司
  • 延边延吉网站建设提升wordpress速度
  • 建设小说网站小说源浙江坤宇建设有限公司网站
  • 360怎么变成建设银行首选网站在本地搭建wordpress
  • 做外贸做网站网站手机模板源码下载
  • 国外免费网站域名服务器入口挺好的网页链接
  • 如何建设网站兴田德润怎么联系建设公司logo
  • 企业建设网站的比例中信建设有限责任公司集采
  • 我国档案网站建设比较分析郓城做网站
  • 网站建设的网络公wordpress aspnet_client
  • 网站的建设费计入什么科目专业做政法ppt的网站
  • 网站建设优化服务多少钱王店镇建设中心小学网站
  • 网站交互性企业网站开发计划书
  • 《网站建设》期末考试如何做php分页网站
  • 陕西网站建设厦门网站制作百度一下首页网址百度
  • 建设网站如何收费怎样只做自己的网站
  • 镇江网站建设策划如何网上免费做推广
  • 用友班级优化大师怎么用
  • 网站建设数据中心房地产广告设计
  • 站长平台官网wordpress add action
  • 福建住房和城乡建设厅网站首页wordpress自定义过滤
  • 做机械加工外贸网站哪家好html菜鸟教程首页
  • 确保网站建设又在前列百度应用市场app下载
  • mvc5网站开发之六2017网站建设方案
  • 经典网站赏析网站建站报告2000字
  • asp爆网站绝对路径wordpress 文章页404
  • 网站的形式搜索引擎入口大全
  • 定制企业网站建设哪家好外贸网站有哪些