TextInlineSprite
TextInlineSprite copied to clipboard
unity2019支持问题
以前在unity2018上用的很好,2019出现严重问题: 2019的unity中,OnPopulateMesh(VertexHelper toFill)方法的toFill内容发生变化。
2018中,toFill里vertex的个数是原始字符串的4倍,例如,原始字符串是
是2019以上的所有版本都有这个问题么
我用的2019.1.9。应该是2019.1后都有,之前我用的2018版本,是好的。
昨天晚上,我自己琢磨了一下,已经侧面修复了这个问题。
我用的你的项目,用的很早。之前有一些bug(比如spriteGraphic是统一绘制,导致ui排序不对) 所以我做了一些调整,改动有点大,感觉合回你的主线有困难,所以没做push request…
我现在把解决问题的代码发你参考,不一定是最佳方案,但是我这边解决问题了。 原理就是剔除richText的标签。
var sub = inputText.Substring(textIndex, match.Index - textIndex);
var tranSub = _RemoveRichTag(sub);
_textTransferBuilder.Append(tranSub);
_textBuilder.Append(sub);
#if UNITY_2019_1_OR_NEWER int tempIndex = _textTransferBuilder.Length * 4; #else int tempIndex = _textBuilder.Length * 4; #endif _textBuilder.Append( @"<quad size=" + tempGroup.Size + " width=" + tempGroup.Width + " y=16 " + // 这里先硬编码,目前都是32号字,差不多这个值,以后再说 " />"); _textTransferBuilder.Append("#");
我的工程里目前用的非常好,非常感谢。 对于不能合并回的主线,我表示万分抱歉
代码作为附件,在邮件里发送了
嗯嗯, 我会尽快看看的 。
2019 那个Scene Chat Demo 默认语句发出去 显示就是错了, 就是这句
Click Send Button Send Message,[#emoji_7]&&[1#run]。
@fzlcxy 我先修复看看
准确的说,2019中也可能出现顶点数是字符4倍的情况,当Text组件有overflow存在时,我们项目现在的做法是在富文本开头加上一对标签然后在 OnPopulateMesh 中进行判断 如果 最前面4个定点的位置全部相同则判断为 Unity没有去除富文本标签的定点信息
toFill.PopulateUIVertex(ref verts[0], 0);
toFill.PopulateUIVertex(ref verts[1], 1);
toFill.PopulateUIVertex(ref verts[2], 2);
toFill.PopulateUIVertex(ref verts[3], 3);
if(verts[0].position == verts[1].position && verts[2].position == verts[3].position && verts[0].position == verts[3].position) {
removeUnityTag = false;
}
在富文本开头加上一对标签? 是人为额外加上吗 如果需要额外添加,有点破坏使用体验^_^
在富文本开头加上一对标签? 是人为额外加上吗 如果需要额外添加,有点破坏使用体验^_^
代码加呀,对策划是无感的~