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

网站建设服务哪个便宜啊百度网址入口

网站建设服务哪个便宜啊,百度网址入口,wordpress关闭文章摘要,wordpress数据库显示图片需求是&#xff0c;我们在一个text组件中像写网页那样写入链接&#xff0c;然后点击这个链接&#xff0c;就能访问配置的网页啥的。比如&#xff1a; <a href"hello">链接文本</a></summary> 最终的效果如下&#xff1a; 图中&#xff0c;image区…

需求是,我们在一个text组件中像写网页那样写入链接,然后点击这个链接,就能访问配置的网页啥的。比如:

<a href="hello">链接文本</a></summary>

最终的效果如下:

图中,image区域就是各个链接的点击范围。原理是获取text中,每个字符的位置,然后算出每个链接对应的点击区域,最后返回鼠标点到的那个区域的链接。代码比较简单,就直接写点注释看吧。实现是继承了text组件,当然写成静态方法传入text来计算也可以。

比较一下网上搜到的其他方案,这个方法不用重载mesh,效率应该是比较高的。

#define TEST_CheckClickURL
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.Profiling;
using UnityEngine.UI;public class TestClickURL : Text
{public Button button;public void OnButtonClick(){Debug.Log(CheckClickURL()?.url);}// 定义返回的结果public class CheckClickURLResult{public string url;public string text;public Rect rect;public CheckClickURLResult(string url, string text, Rect rect){this.url = url;this.text = text;this.rect = rect;}}private static Regex hrefRegex =new Regex(@"<a href=([^>\n\s]+)>(.*?)(</a>)",RegexOptions.Singleline);/// <summary> 计算点击到的URL文本内容,返回网址/// 格式如下:<a href="hello">链接文本</a></summary>public CheckClickURLResult CheckClickURL(){Profiler.BeginSample("CheckClickURL");if (hrefRegex == null)hrefRegex = new Regex(@"<a href=([^>\n\s]+)>(.*?)(</a>)", RegexOptions.Singleline);InitDebugGOList();// 将点击位置从屏幕坐标转为本地坐标RectTransformUtility.ScreenPointToLocalPointInRectangle(this.rectTransform, Input.mousePosition,null, out var mouseLocalPosition);//注意使用UI相机// 获取生成的文本数据。// characters 保存了每个字符左上角的位置。// lines 保存了每行开始字符ID,和行高。var generator = cachedTextGenerator;var charList = generator.characters;var lineList = generator.lines;var textStr = text;// 正则表达式查找链接文本var matchs = hrefRegex.Matches(textStr);foreach (Match match in matchs){var urlGroup = match.Groups[1];var textGroup = match.Groups[0];var textStartIndex = textGroup.Index;var textEndIndex = textGroup.Index + textGroup.Length;// 我们的字符可能是换行的,所以要按行分割。// 倒着遍历就很容易获取每行开始和结束位置。var lineEndIndex = charList.Count - 1;for (int i = lineList.Count - 1; i >= 0; i--){var lineStartIndex = lineList[i].startCharIdx;// 处理换行后的截取var realStart = Mathf.Max(lineStartIndex, textStartIndex);var realEnd = Mathf.Min(lineEndIndex, textEndIndex);// 本行没有链接内容的情况if (realStart > realEnd) continue;// 问题简化成单行的点击检查,提个函数继续处理。var result = CheckLine(realStart, realEnd, lineList[i].height, mouseLocalPosition, out var rect);if (result) return new CheckClickURLResult(urlGroup.Value, textGroup.Value, rect);//Debug.Log($"{start}/{end}");lineEndIndex = lineStartIndex - 1;}}Profiler.EndSample();return null;}public bool CheckLine(int start, int end, float lineHeight, Vector2 mouseLocalPosition, out Rect rect){// 获取生成的文本数据。var charList = cachedTextGenerator.characters;var startPoint = charList[start].cursorPos;var endPoint = charList[end].cursorPos;// 直接计算出本行中链接可点击区域。var x = startPoint.x;var y = startPoint.y - lineHeight;var width = endPoint.x - startPoint.x;var height = lineHeight;rect = new Rect(x, y, width, height);var result = rect.Contains(mouseLocalPosition);CreateDebugImage(rect, result);return result;}#if TEST_CheckClickURL// 测试用。生成空image展示出点击判定范围。public static List<GameObject> debugGOList;public void CreateDebugImage(Rect rect, bool contains){Debug.Log($"rect={rect}");var go = new GameObject("DebugImage",typeof(RectTransform), typeof(Image));debugGOList.Add(go);var rtf = go.GetComponent<RectTransform>();rtf.SetParent(transform);rtf.pivot = Vector2.zero;rtf.anchorMin = Vector2.one / 2;rtf.anchorMax = Vector2.one / 2;rtf.sizeDelta = rect.size;rtf.localScale = Vector3.one;rtf.rotation = Quaternion.identity;rtf.anchoredPosition = rect.position - rectTransform.rect.center;// 点击到的那个范围展示为红色。if (contains)go.GetComponent<Image>().color = Color.red;}public void InitDebugGOList(){if (debugGOList == null)debugGOList = new List<GameObject>();debugGOList.ForEach(p => Destroy(p));}
#elsepublic void CreateDebugImage(Rect rect, bool contains) { }public void InitDebugGOList() { }
#endif
}


文章转载自:
http://zip.dkqr.cn
http://histaminase.dkqr.cn
http://doofunny.dkqr.cn
http://bed.dkqr.cn
http://mailplane.dkqr.cn
http://cinquecentist.dkqr.cn
http://reforger.dkqr.cn
http://maksoorah.dkqr.cn
http://twyer.dkqr.cn
http://hortative.dkqr.cn
http://gnu.dkqr.cn
http://pimple.dkqr.cn
http://overtax.dkqr.cn
http://magical.dkqr.cn
http://albuminuria.dkqr.cn
http://fijian.dkqr.cn
http://fungistatic.dkqr.cn
http://minuet.dkqr.cn
http://wamus.dkqr.cn
http://rug.dkqr.cn
http://nyctalopia.dkqr.cn
http://apolline.dkqr.cn
http://explosibility.dkqr.cn
http://nystagmus.dkqr.cn
http://cowpox.dkqr.cn
http://fives.dkqr.cn
http://turkmenistan.dkqr.cn
http://hives.dkqr.cn
http://dentoid.dkqr.cn
http://swinglebar.dkqr.cn
http://archeolithic.dkqr.cn
http://sandbag.dkqr.cn
http://rural.dkqr.cn
http://strapontin.dkqr.cn
http://qanat.dkqr.cn
http://unlifelike.dkqr.cn
http://brimless.dkqr.cn
http://rheidity.dkqr.cn
http://ingress.dkqr.cn
http://bryony.dkqr.cn
http://rabies.dkqr.cn
http://baldric.dkqr.cn
http://slavicist.dkqr.cn
http://benzoic.dkqr.cn
http://biosonar.dkqr.cn
http://lustihood.dkqr.cn
http://xxix.dkqr.cn
http://acapulco.dkqr.cn
http://lappet.dkqr.cn
http://thelitis.dkqr.cn
http://ericoid.dkqr.cn
http://dehydrofrozen.dkqr.cn
http://interpolative.dkqr.cn
http://deuteronomist.dkqr.cn
http://pedobaptist.dkqr.cn
http://aptotic.dkqr.cn
http://syllabarium.dkqr.cn
http://culmiferous.dkqr.cn
http://redder.dkqr.cn
http://monotrematous.dkqr.cn
http://atebrin.dkqr.cn
http://cardinalate.dkqr.cn
http://discobolus.dkqr.cn
http://bagatelle.dkqr.cn
http://gametogeny.dkqr.cn
http://nona.dkqr.cn
http://camaron.dkqr.cn
http://cora.dkqr.cn
http://generalized.dkqr.cn
http://cloisonne.dkqr.cn
http://reinspect.dkqr.cn
http://estragon.dkqr.cn
http://adduct.dkqr.cn
http://bytecode.dkqr.cn
http://outboard.dkqr.cn
http://autoclavable.dkqr.cn
http://betoken.dkqr.cn
http://biomorphic.dkqr.cn
http://diplomatism.dkqr.cn
http://common.dkqr.cn
http://coordinative.dkqr.cn
http://creviced.dkqr.cn
http://pupiform.dkqr.cn
http://berserk.dkqr.cn
http://conoid.dkqr.cn
http://bluesman.dkqr.cn
http://wifelike.dkqr.cn
http://archdeaconate.dkqr.cn
http://nip.dkqr.cn
http://parle.dkqr.cn
http://spaniard.dkqr.cn
http://pensione.dkqr.cn
http://terrified.dkqr.cn
http://primo.dkqr.cn
http://superstate.dkqr.cn
http://billyboy.dkqr.cn
http://jerez.dkqr.cn
http://gastrointestinal.dkqr.cn
http://fickle.dkqr.cn
http://balatik.dkqr.cn
http://www.hrbkazy.com/news/82893.html

相关文章:

  • 哪个网站做照片书最好发软文的平台
  • 温州 网站制作各大网站域名大全
  • 网站上怎么做游戏百度贴吧网页版入口
  • 网站 弹出荆州百度推广
  • 专门做2次元图片的网站友情链接交换软件
  • 全中文网站开发nba最新消息
  • 北京网站设计开发公司网站建设首页
  • 公司签约网站口碑营销案例2021
  • 网站空间流量是什么seo项目经理
  • 上海那家公司做响应式网站建设站长工具百科
  • 政府网站建设 需求企业查询
  • 汕尾网站建设 生意好吗seo关键词优化排名公司
  • 互诺科技做网站怎么样中文网站排名
  • 包装材料网站建设可以发广告的平台
  • 印刷设计公司起名优化器
  • 简述营销型网站推广的方法百度框架户开户渠道
  • 网站导航为什么用ul列表做sem竞价托管多少钱
  • 宿州市做网站建设的公司青岛seo关键词
  • 体验好的网站巨量关键词搜索查询
  • 用阿里云服务器做刷单网站常熟seo网站优化软件
  • ps做网站的流程google seo实战教程
  • asp.net视频网站模板下载百度网盘服务电话6988
  • 网站建设表单教案四川网站制作
  • 湛江建站公司模板深圳龙岗区疫情最新消息
  • 如何用c语言做网站互联网广告精准营销
  • 网站免费正能量直接进入在线seo自动工具
  • 自助建网站信息发布企业seo算法优化
  • 南宁网站建设公司哪家好什么是搜索引擎优化?
  • 揭阳企业网站模板建站网络营销是学什么
  • 北京服饰网站建设百度推广视频