使用 cachedTextGenerator 获取字母的正确位置

Get correct position of letters using cachedTextGenerator

考虑一个包含许多文本段落的 Text。使用 UICharInfo.

找到某个字符的位置 很容易

例如,查找所有换行符...

TextGenerator tg = text.cachedTextGenerator;
int kText = tg.characterCount;
for (int i=0; i < kText; ++i)
  {
  if ( text.text[i] == '\n' )
    Debug.Log("found a newline at " + tg.verts[i * 4].position.y);
  }

这给出了正确的比率但它们都被一些比例因子

这似乎取决于很多因素(屏幕形状、像素、设置等)。

当然,这是在 Canvas 中使用 scale-with-screen-size。

如何获得字符的实际偏移量 - 用于在滚动视图中滚动到该点

它结合使用了 text.pixelsPerUnit 和他们所谓的舍入偏移量。他们使用的代码是开源的,可以找到 here。您要查找的相关行在函数

protected override void OnPopulateMesh(VertexHelper toFill)

他们用来计算它们的所有函数都是public并且应该很容易在你这边复制