查找字符串在Text文本中的位置

news/2024/11/28 20:41:43/
public static Vector3 GetStringPositionAtText(Text text, string strFragment)
{int strFragmentIndex = text.text.IndexOf(strFragment); //-1表示不包含strFragmentVector3 stringPos = Vector3.zero;if (strFragmentIndex > -1){Vector3 firstPos = GetCharPositionAtText(text, strFragmentIndex + 1);Vector3 lastPos = GetCharPositionAtText(text, strFragmentIndex + strFragment.Length);stringPos = (firstPos + lastPos) * 0.5f;}else{stringPos = GetCharPositionAtText(text, strFragmentIndex);}return stringPos;
}public static Vector3 GetCharPositionAtText(Text text, int charIndex)
{string textStr = text.text;Vector3 charPos = Vector3.zero;if (charIndex <= textStr.Length && charIndex > 0){TextGenerator textGen = new TextGenerator(textStr.Length);Vector2 extents = text.rectTransform.rect.size;textGen.Populate(textStr, text.GetGenerationSettings(extents));int newLine = textStr.Substring(0, charIndex).Split('\n').Length - 1;int whiteSpace = textStr.Substring(0, charIndex).Split(' ').Length - 1;int indexOfTextQuad = (charIndex * 4) + (newLine * 4) - 4;if (indexOfTextQuad < textGen.vertexCount){charPos = (textGen.verts[indexOfTextQuad].position +textGen.verts[indexOfTextQuad + 1].position +textGen.verts[indexOfTextQuad + 2].position +textGen.verts[indexOfTextQuad + 3].position) / 4f;}}charPos = text.transform.TransformPoint(charPos); //转换为世界坐标return charPos;
}

http://www.ppmy.cn/news/1379714.html

相关文章

‘ jupyter ‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

安装anaconda后&#xff0c;在 Dos黑窗口 运行 jupyter notebook 的两个问题 原因&#xff1a;没配置环境变量 解决方法&#xff1a; 在 系统环境变量Path 中 添加两个地址 这里以anaconda安装在 D:\anaconda\install 下为例 &#xff08;根据个人安装具体位置而定&#xff…

架构师面试100问?

面试架构师时&#xff0c;需要考察广泛的知识领域&#xff0c;包括技术、架构设计、团队管理、沟通能力等方面。以下是一些可能的面试问题&#xff0c;涵盖了多个方面问题&#xff1a; 介绍一下你的技术背景和经验。你在之前的项目中扮演过哪些角色&#xff1f;你对微服务架构…

go go.mod file not found in current directory or any parent directory

场景&#xff1a; 安装好 liteide 之后创建了第一个 “hello world” 的golang 项目&#xff0c;却报了如下错误。 原因分析&#xff1a; go 的环境配置问题。与 golang 的包管理有关。 解决方案&#xff1a; 如果你是 Windows 系统&#xff0c;快捷键 “WinR”&#xff0c…

uniapp引入jQuery

安装 npm install jquery --saveoryarn add jquery引入 import Vue from vue import jquery from "jquery"; Vue.prototype.$ jquery;<template><view>abc</view> </template><script>export default {data() {return {}}} </scr…

王道机试C++第 5 章 数据结构二:队列queue和21年蓝桥杯省赛选择题Day32

目录 5.2 队列 1&#xff0e;STL-queue 课上演示&#xff1a; 基本代码展示&#xff1a; 2. 队列的应用 例:约瑟夫问题 No. 2 题目描述&#xff1a; 思路提示&#xff1a; 代码展示&#xff1a; 例&#xff1a;猫狗收容所 题目描述&#xff1a; 代码表示&#xff1…

IDEA编写各种WordCount运行

目录 一、编写WordCount(Spark_scala)提交到spark高可用集群 1.项目结构 2.导入依赖 3.编写scala版的WordCount 4.maven打包 5.运行jar包 ​6.查询hdfs的输出结果 二、本地编写WordCount(Spark_scala)读取本地文件 1.项目结构 2.编写scala版的WordCount 3.编辑Edit …

软件测试 基础(2)

文章目录 1. 软件测试&软件开发生命周期2. 如何描述一个 BUG3. 如何定义 BUG 的级别4. BUG 的生命周期5. 如何进行第一次测试6. 测试的执行和 BUG 管理7. 产生争执怎么办&#xff08;处理人际关系&#xff09; 1. 软件测试&软件开发生命周期 软件测试的生命周期&#…

手机群控软件开发必备源代码分享!

随着移动互联网的飞速发展&#xff0c;手机群控技术在市场推广、自动化测试、应用管理等领域的应用越来越广泛&#xff0c;手机群控软件作为一种能够同时控制多台手机设备的工具&#xff0c;其开发过程中&#xff0c;源代码的编写显得尤为重要。 1、设备连接与识别模块 设备连…