Skip to content
This repository has been archived by the owner on Jul 11, 2023. It is now read-only.

unity2020 每条Text只能用一个表情 #53

Open
luxingjian3685 opened this issue Jan 7, 2021 · 10 comments
Open

unity2020 每条Text只能用一个表情 #53

luxingjian3685 opened this issue Jan 7, 2021 · 10 comments

Comments

@luxingjian3685
Copy link

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

@luxingjian3685
Copy link
Author

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

@Seraphine521
Copy link

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

@Seraphine521
Copy link

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

这行代码改成这样就OK了

@Seraphine521
Copy link

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

这行代码改成这样就OK了

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

@hanyq
Copy link

hanyq commented Jun 24, 2021

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

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

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

@luxingjian3685
Copy link
Author

luxingjian3685 commented Jun 24, 2021 via email

@wolf-aowu
Copy link

@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
Copy link

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

@luxingjian3685
Copy link
Author

luxingjian3685 commented Dec 2, 2021 via email

@wolf-aowu
Copy link

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants