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

时间:2016-02-21 18:49:57

标签: unity3d unity3d-ui

考虑一个包含许多段落文字的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使用屏幕尺寸缩放。

如何获得角色的实际偏移量 - 在滚动视图中使用滚动到该点

1 个答案:

答案 0 :(得分:1)

它使用text.pixelsPerUnit和他们称之为舍入偏移量的组合。他们使用的代码是开源的,可以找到here。您正在寻找的相关行位于函数

protected override void OnPopulateMesh(VertexHelper toFill)

他们用来计算它们的所有功能都是公开的,应该很容易复制到你身边