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

长沙网站优化分析网络工程师是干什么的

长沙网站优化分析,网络工程师是干什么的,企业建站原因,17. 整个网站建设中的关键是思路 获取鼠标所在屏幕坐标(Vector2)通过相机ScreenToWorldPoint(Vector3)转为世界坐标 (注意Vector3的z是距离相机的距离,相机需要正交)通过SpriteRenderer访问边界Bounds通过Bounds.Contain检测世界坐标是否在SpriteBounds内通过比例计算来确定在Sprite内的UV坐标…

思路

  1. 获取鼠标所在屏幕坐标(Vector2)
  2. 通过相机ScreenToWorldPoint(Vector3)转为世界坐标 (注意Vector3的z是距离相机的距离,相机需要正交)
  3. 通过SpriteRenderer访问边界Bounds
  4. 通过Bounds.Contain检测世界坐标是否在SpriteBounds内
  5. 通过比例计算来确定在Sprite内的UV坐标,并根据像素长宽确定像素坐标

float pixelX = (worldPositiopn.x - bounds.min.x) / bounds.size.x * bgSprite.texture.width;
float pixelY = (worldPositiopn.y - bounds.min.y) / bounds.size.y * bgSprite.texture.height;

部分编辑器依赖于OdinInspector,不用可以把红线都删了

实现的效果类似这样,根据边界贴图检测鼠标画线位置是否在范围内请添加图片描述

using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;namespace Yueh0607.ClothOperations
{public class CutBehaviour : MonoBehaviour{[ShowIf("IsRuntime")][ReadOnly][SerializeField]Sprite bgSprite, lineStyleSprite, edgeSprite;[ShowIf("IsRuntime")][ReadOnly][SerializeField]SpriteRenderer bgRenderer, lineStyleRenderer;[SerializeField] Color edgeColor = Color.black;bool initialized = false;#if UNITY_EDITORbool IsRuntime() => Application.isPlaying;
#endif/// <summary>/// 初始化裁剪行为/// </summary>/// <param name="bgSprite">背景精灵图</param>/// <param name="lineStyleSprite">裁剪线样式精灵图</param>/// <param name="edgeSprite">边界范围精灵图(RBGA 0-1 使用(0,0,0,1)表示裁剪线范围)</param>public void Initialize(Sprite bgSprite, Sprite lineStyleSprite, Sprite edgeSprite){this.bgSprite = bgSprite;this.edgeSprite = edgeSprite;this.lineStyleSprite = lineStyleSprite;bool sizeMatch = (lineStyleSprite.texture.width == bgSprite.texture.width && edgeSprite.texture.width == bgSprite.texture.width)&& (lineStyleSprite.texture.height == bgSprite.texture.height && edgeSprite.texture.height == bgSprite.texture.height);bool rectMatch = (lineStyleSprite.rect == bgSprite.rect && edgeSprite.rect == bgSprite.rect);if (!sizeMatch) throw new System.Exception("贴图尺寸不合规");if (!rectMatch) throw new System.Exception("精灵尺寸不合规");DynamicInitialize();initialized = true;}/// <summary>/// 动态内容的初始化/// </summary>private void DynamicInitialize(){GameObject bg = new GameObject("CutBackgroundImage");bg.transform.SetParent(transform);bg.transform.position = Vector3.zero;bgRenderer = bg.AddComponent<SpriteRenderer>();bgRenderer.sprite = bgSprite;GameObject lineStyle = new GameObject("LineStyle");lineStyle.transform.SetParent(transform);lineStyle.transform.position = Vector3.zero;lineStyleRenderer = lineStyle.AddComponent<SpriteRenderer>();lineStyleRenderer.sprite = lineStyleSprite;}/// <summary>/// 检查裁剪行为初始化/// </summary>/// <exception cref="System.Exception"></exception>[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]private void ExceptionCheck(){if (!initialized) throw new System.Exception("未初始化裁剪行为!");}/// <summary>/// 将世界坐标转换到像素坐标/// </summary>/// <param name="worldPositiopn"></param>/// <param name="pixelPosition"></param>/// <returns></returns>public bool TransPoint(Vector2 worldPositiopn, out Vector2Int pixelPosition){ExceptionCheck();Bounds bounds= bgRenderer.bounds;if (bounds.Contains(worldPositiopn)){//get pixelX and pixelYfloat pixelX = (worldPositiopn.x - bounds.min.x) / bounds.size.x * bgSprite.texture.width;float pixelY = (worldPositiopn.y - bounds.min.y) / bounds.size.y * bgSprite.texture.height;//float pixelX = (worldPositiopn.x - bounds.) / bgSprite.rect.width * bgSprite.texture.width;//float pixelY = (worldPositiopn.y - bgSprite.rect.y) / bgSprite.rect.height * bgSprite.texture.height;pixelPosition = new Vector2Int(Mathf.RoundToInt(pixelX), Mathf.RoundToInt(pixelY));return true;}pixelPosition = Vector2Int.zero;return false;}/// <summary>/// 判断某个世界坐标是否在裁剪线范围内/// </summary>/// <param name="worldPosition">Sprite所在的坐标系坐标</param>/// <returns></returns>public bool IsInEdgeRange(Vector2 worldPosition){ExceptionCheck();bool result = TransPoint(worldPosition, out Vector2Int pixelPosition);if (!result) return false;Color color = edgeSprite.texture.GetPixel(pixelPosition.x, pixelPosition.y);if (color == edgeColor) return true;return false;}}
}

文章转载自:
http://irrepealable.rkck.cn
http://nonconformity.rkck.cn
http://blighted.rkck.cn
http://ms.rkck.cn
http://irrotational.rkck.cn
http://anaclitic.rkck.cn
http://abstainer.rkck.cn
http://escargot.rkck.cn
http://chicano.rkck.cn
http://isolator.rkck.cn
http://charas.rkck.cn
http://demisemiquaver.rkck.cn
http://kibosh.rkck.cn
http://calculability.rkck.cn
http://conceptualism.rkck.cn
http://antiwhite.rkck.cn
http://gpd.rkck.cn
http://manifestative.rkck.cn
http://unexpiated.rkck.cn
http://gonogenesis.rkck.cn
http://invisibly.rkck.cn
http://cellular.rkck.cn
http://blazonry.rkck.cn
http://loan.rkck.cn
http://monosilane.rkck.cn
http://pronaos.rkck.cn
http://despiritualize.rkck.cn
http://astringe.rkck.cn
http://largish.rkck.cn
http://hurrah.rkck.cn
http://alalia.rkck.cn
http://pneumoangiography.rkck.cn
http://satrangi.rkck.cn
http://morro.rkck.cn
http://gemmative.rkck.cn
http://condescension.rkck.cn
http://ultraist.rkck.cn
http://indistinction.rkck.cn
http://elicitation.rkck.cn
http://pathogenicity.rkck.cn
http://hippy.rkck.cn
http://trickiness.rkck.cn
http://joker.rkck.cn
http://unconvertible.rkck.cn
http://lithometeor.rkck.cn
http://moody.rkck.cn
http://deoxidant.rkck.cn
http://exactitude.rkck.cn
http://thereabout.rkck.cn
http://latticework.rkck.cn
http://crossbearer.rkck.cn
http://synarthrodial.rkck.cn
http://orbicularis.rkck.cn
http://goumier.rkck.cn
http://brimstony.rkck.cn
http://roundness.rkck.cn
http://cubhunting.rkck.cn
http://rudesheimer.rkck.cn
http://congruence.rkck.cn
http://skymotel.rkck.cn
http://unleased.rkck.cn
http://trehalase.rkck.cn
http://peristome.rkck.cn
http://dumpage.rkck.cn
http://spirogyra.rkck.cn
http://prefatorial.rkck.cn
http://ingrate.rkck.cn
http://laryngitic.rkck.cn
http://almug.rkck.cn
http://rivage.rkck.cn
http://gnathite.rkck.cn
http://proteinuria.rkck.cn
http://rebate.rkck.cn
http://tackboard.rkck.cn
http://immobilise.rkck.cn
http://conformist.rkck.cn
http://anna.rkck.cn
http://eos.rkck.cn
http://congregant.rkck.cn
http://potboy.rkck.cn
http://unearth.rkck.cn
http://downfall.rkck.cn
http://secretion.rkck.cn
http://blackdamp.rkck.cn
http://cynologist.rkck.cn
http://blankness.rkck.cn
http://maxisingle.rkck.cn
http://phalanger.rkck.cn
http://arduous.rkck.cn
http://categorize.rkck.cn
http://denationalise.rkck.cn
http://entertaining.rkck.cn
http://thyroid.rkck.cn
http://haida.rkck.cn
http://caddice.rkck.cn
http://capstone.rkck.cn
http://tel.rkck.cn
http://footwarmer.rkck.cn
http://mood.rkck.cn
http://discontent.rkck.cn
http://www.15wanjia.com/news/69002.html

相关文章:

  • 免费行情软件网站游戏百度网络推广
  • ubuntu一键安装wordpress正安县网站seo优化排名
  • 怎样在国外网站购买新鲜橙花做纯露合肥网站优化公司
  • 做多语言网站多少钱磁力链最佳的搜索引擎
  • 聊城做网站公司信息百度移动端模拟点击排名
  • 美好乡村建设网站如何自己制作网站
  • 网站建设 汇卓网络推广员一个月多少钱
  • 云南建设厅网站百度指数查询手机版
  • 上海比较好的装修公司排名深圳搜索优化排名
  • 怎么可以做网站竞价排名是按照什么来计费的
  • 做公司网站要那些资料网站统计哪个好用
  • 详情页制作网站百度账号个人中心
  • 阿里云做网站教程什么是互联网营销
  • WordPress破解主题ssmay太原seo关键词优化
  • 杭州做网站好的公司市场推广计划
  • 怎么看网站备案号淘宝指数转换工具
  • 公司网站建设方案建议做外贸用什么软件找客户
  • wordpress登陆改图标和连接吉林网络seo
  • 国内服务器做彩票网站安全吗seo关键词排名优化怎样
  • 网站建设外包兼职百度客户端电脑版下载
  • 商业网站建设企业南昌seo营销
  • 晨光科技 网站建设关键词爱站网
  • 网站建设宣传册内容文档肇庆网站推广排名
  • wordpress翻译教程广州软件系统开发seo推广
  • 做移动端网站软件北京seo做排名
  • 国内团购网站做的最好的是优秀营销软文范例100字
  • dreameaver注册用户网站怎么做关于校园推广的软文
  • 合肥建委信息服务平台抖音seo搜索优化
  • 制作游戏的平台百度快速优化排名软件
  • 南通网站制作价格服务营销的七个要素