使用 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并且应该很容易在你这边复制
考虑一个包含许多文本段落的 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并且应该很容易在你这边复制