TextInlineSprite icon indicating copy to clipboard operation
TextInlineSprite copied to clipboard

关于下划线部分的修改

Open RainStar1989511 opened this issue 8 years ago • 1 comments

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

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

这个方案其实也是治标不治本,只是在原基础代码上,更快速去实现效果 希望有更好的解决方案

具体代码为: 新增一个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

RainStar1989511 avatar Feb 28 '17 06:02 RainStar1989511

好,谢谢,我后面会修改的

coding2233 avatar Mar 13 '17 13:03 coding2233