记录一些小技巧 ,借此机会重新开始写作 .这里提供两种思路,最后建议将这两种做法结合一下 可以做成类似微信聊天气泡的效果。

有两种方式来实现了聊天气泡,第一种是自己去计算当前文字的宽度,然后控制背景气泡进行宽度与高度的缩放。参考代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
private void BubbleFormate()
{
// MainContent.GraphicUpdateComplete();

if (MainContent.rectTransform.sizeDelta.x > MainContent.preferredWidth)
{
MainContentBG.rectTransform.sizeDelta =
new Vector2(
MainContentBG.rectTransform.sizeDelta.x -
(MainContent.rectTransform.sizeDelta.x - MainContent.preferredWidth),
MainContentBG.rectTransform.sizeDelta.y
);
}
else
{
int temp_width = 0;
var rawContent = MainContent.text;

for (int i = 0; i < MainContent.text.Length; i++)
{
MainContent.font.GetCharacterInfo(MainContent.text[i], out temp_info, MainContent.fontSize);
temp_width += temp_info.advance;

if (temp_width >= MainContent.rectTransform.sizeDelta.x)
{
rawContent = rawContent.Insert(i, "\n");
temp_width = temp_info.advance;

MainContentBG.rectTransform.sizeDelta = new Vector2(
MainContentBG.rectTransform.sizeDelta.x,
MainContentBG.rectTransform.sizeDelta.y + MainContent.preferredHeight
);
}
}
MainContent.text = rawContent;

}
}

第二种方式是使用 Layout 布局进行规范

最后我建议使用这两者的结合,在控制宽度的时候不加限制,自己判断宽度然后动态的添加换行符。

这样的好处是能控制文本框的长短,做成类似微信聊天这种 消息长的话 气泡就会变长,反之亦然。