TextInlineSprite
TextInlineSprite copied to clipboard
关于下划线部分的修改
原来的代码,下划线部分,如果超链接需要换行,下划线,就出现BUG了
然后我基于InlieSpriteText.cs来修改代码,解决了拉伸和换行的BUG问题,现在效果是:

代价是下划线要画很多条:

这个方案其实也是治标不治本,只是在原基础代码上,更快速去实现效果 希望有更好的解决方案
具体代码为: 新增一个list变量
List<Vector3> unLineVertsPos = new List<Vector3>(); //下划线使用 X坐标,Y坐标, Z长度
然后在OnPopulateMesh方法中新增
int lineheight = cachedTextGenerator.lines[0].height;
IList<UICharInfo> charinfos = cachedTextGenerator.characters;
for(int i = 0 ; i < charinfos.Count ; i++) {
if(charinfos[i].charWidth != 0) {
unLineVertsPos.Add(new Vector3(charinfos[i].cursorPos.x , charinfos[i].cursorPos.y - lineheight , charinfos[i].charWidth));
}
}
#region 处理超链接的下划线--拉伸实现
...
Vector3 _StartBoxPos = new Vector3(unLineVertsPos[i].x, unLineVertsPos[i].y, 0.0f);
Vector3 _EndBoxPos = _StartBoxPos + new Vector3(unLineVertsPos[i].z, 0.0f, 0.0f);
#endregion
AddUnderlineQuad方法修改一下片面长度
#region 添加下划线
void AddUnderlineQuad(VertexHelper _VToFill, IList<UIVertex> _VTUT, Vector3 _VStartPos, Vector3 _VEndPos)
{
Vector3[] _TUnderlinePos = new Vector3[4];
_TUnderlinePos[0] = _VStartPos + new Vector3(-2 , 0 , 0);
_TUnderlinePos[1] = _VEndPos + new Vector3(2 , 0 , 0);
_TUnderlinePos[2] = _VEndPos + new Vector3(2, fontSize * 0.1f , 0);
_TUnderlinePos[3] = _VStartPos + new Vector3(-2, fontSize * 0.1f , 0);
......
}
#endregion
好,谢谢,我后面会修改的