TextInlineSprite icon indicating copy to clipboard operation
TextInlineSprite copied to clipboard

unity2020 每条Text只能用一个表情

Open luxingjian3685 opened this issue 4 years ago • 10 comments

点击发送测试信息[#emoji_8]&&[1#run]----test-en 上述信息显示第一个表情正常,第二个是乱码

luxingjian3685 avatar Jan 07 '21 02:01 luxingjian3685

是换行导致的,一行显示是没问题的,换行显示的话第二行的表情是乱码

luxingjian3685 avatar Jan 07 '21 03:01 luxingjian3685

我也发现这个问题了,你解决了吗?

Seraphine521 avatar Mar 29 '21 04:03 Seraphine521

朋友,这个问题我解决了,应该是大佬敲代码的时候手抖了 #if UNITY_2019_1_OR_NEWER index = autoLF ? _spriteInfo[i].NewIndex : _spriteInfo[i].Index;

这行代码改成这样就OK了

Seraphine521 avatar Mar 29 '21 06:03 Seraphine521

朋友,这个问题我解决了,应该是大佬敲代码的时候手抖了 #if UNITY_2019_1_OR_NEWER index = autoLF ? _spriteInfo[i].NewIndex : _spriteInfo[i].Index;

这行代码改成这样就OK了

不过改完之后又有其他的BUG,需要另外想办法了

Seraphine521 avatar Mar 29 '21 08:03 Seraphine521

朋友,这个问题我解决了,应该是大佬敲代码的时候手抖了 #if UNITY_2019_1_OR_NEWER index = autoLF ? _spriteInfo[i].NewIndex : _spriteInfo[i].Index; 这行代码改成这样就OK了

不过改完之后又有其他的BUG,需要另外想办法了

请问换行后的乱码解决了吗

hanyq avatar Jun 24 '21 08:06 hanyq

之前已经解决了,现在能正常使用了,已经应用到项目中了。

------------------ 原始邮件 ------------------ 发件人: "coding2233/TextInlineSprite" @.>; 发送时间: 2021年6月24日(星期四) 下午4:57 @.>; @.@.>; 主题: Re: [coding2233/TextInlineSprite] unity2020 每条Text只能用一个表情 (#53)

朋友,这个问题我解决了,应该是大佬敲代码的时候手抖了 #if UNITY_2019_1_OR_NEWER index = autoLF ? _spriteInfo[i].NewIndex : _spriteInfo[i].Index; 这行代码改成这样就OK了

不过改完之后又有其他的BUG,需要另外想办法了

请问换行后的乱码解决了吗

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

luxingjian3685 avatar Jun 24 '21 08:06 luxingjian3685

@luxingjian3685 我把 InlineText 中的 AutoLF 函数修改后换行就没有问题了 private bool AutoLF() { var settings = GetGenerationSettings(Vector2.zero); float width = cachedTextGeneratorForLayout.GetPreferredWidth(m_Text, settings) / pixelsPerUnit; // 下面这行修改了 原先的 rectTransform.sizeDelta.x 并不能所有时候都获取到文本框正确的宽度,但 rectTransform.rect.width 可以 bool widthResult = width < rectTransform.rect.width || horizontalOverflow == HorizontalWrapMode.Overflow; settings = GetGenerationSettings(new Vector2(rectTransform.rect.size.x, 0.0f)); // 下面这行同理 float height = cachedTextGeneratorForLayout.GetPreferredHeight(m_Text, settings) / pixelsPerUnit; bool heightResult = height < rectTransform.rect.height || verticalOverflow == VerticalWrapMode.Overflow; return !widthResult || !heightResult; }

wolf-aowu avatar Dec 02 '21 08:12 wolf-aowu

但是我没太明白为什么要判断换行。从表现上来看,如果文本中存在自动换行,Unity还是会记录所有富文本标签顶点之类的信息,只有没有自动换行时才会不记录富文本标签顶点之类的信息?有什么依据可以参考的吗?

wolf-aowu avatar Dec 02 '21 08:12 wolf-aowu

这个我改了能用,但是怎么改的忘了,项目交给别人维护了,搞新项目了有时间我再回去看看。

------------------ 原始邮件 ------------------ 发件人: "coding2233/TextInlineSprite" @.>; 发送时间: 2021年12月2日(星期四) 下午4:56 @.>; @.@.>; 主题: Re: [coding2233/TextInlineSprite] unity2020 每条Text只能用一个表情 (#53)

但是我没太明白为什么要判断换行。从表现上来看,如果文本中存在自动换行,Unity还是会记录所有富文本标签顶点之类的信息,只有没有自动换行时才会不记录富文本标签顶点之类的信息?有什么依据可以参考的吗?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

luxingjian3685 avatar Dec 02 '21 09:12 luxingjian3685

好的,谢谢。 可以顺便解答我一个疑惑吗? 我知道 GetGenerationSettings(Vector2.zero) 这个方法是返回文本设置,但是我对它得传入参数不太懂,为什么对于获取 width 的文本设置是使用 Vector2.zero,获取 length 的文本设置是使用 new Vector2(rectTransform.rect.size.x, 0.0f),就是这个传入参数我应该怎么知道我需要传入什么?

wolf-aowu avatar Dec 02 '21 12:12 wolf-aowu