Unity 聊天气泡根据文本内容适配

第一步 拼接UI

1、对气泡图进行九宫图切割

2、设置底图pivot位置和对齐方式

pivot位置:(0,1)

对齐方式:左上对齐

3、设置文本pivot位置和对齐方式,并挂上布局组件

pivot设置和对齐方式和底图一样,文本作为底图的子节点

文本组件宽度不变,主要控制高度根据文本内容适配

第二步 代码控制适配

主要控制高度适配

气泡底图的高度包括三部分组成:顶部间隔+文本组件高度+底部间隔

using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
   public RectTransform bgRect;
   public Text txt;
   private RectTransform txtRect;
   
   private void Start()
   {
      txtRect = txt.GetComponent<RectTransform>();
      AutoFitBg();
   }

   private void Update()
   {
      //测试用
      if (Input.GetKeyDown(KeyCode.A))
      {
         txt.text = "南无阿弥陀佛";
         AutoFitBg();
      }
      //测试用
      if (Input.GetKeyDown(KeyCode.D))
      {
         txt.text = "56456e4f564awe564f564ewa56f456ewa4f56ewa456f4a6ew54f56a4ewf";
         AutoFitBg();
      }
   }

   public void AutoFitBg()
   {
      LayoutRebuilder.ForceRebuildLayoutImmediate(txtRect);
      var txtHeight = txtRect.rect.height;//文本组件高度
      var topHeight = 36;//顶部间隔
      var bottomHeight = 36;//底部间隔
      var sumHeight = topHeight + txtHeight + bottomHeight;
      bgRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,sumHeight);
   }
}