当前位置: 首页 > news >正文

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);
   }
}

相关文章:

  • 解锁 AIoT 无限可能,乐鑫邀您共赴 Embedded World 2025
  • 当使用vcpkg安装的qt5时,在VS调用出现libcrypto-*-x64.dll不是有效路径时
  • Design Compiler:边界优化(Boundary Optimization)
  • nginx ngx_http_module(7) 指令详解
  • 从函数到神经网络
  • 解锁机器学习核心算法 | K-平均:揭开K-平均算法的神秘面纱
  • Unity性能优化个人经验总结(不定期更新)
  • 如何在本机上模拟IP地址
  • 金融交易算法单介绍
  • 在系统中如何集成限流组件单机和集群
  • 车载音频配置(二)
  • 基于javaweb的SpringBoot校园二手商品系统设计和实现(源码+文档+部署讲解)
  • 使用 NVM 随意切换 Node.js 版本
  • .NET周刊【2月第2期 2025-02-09】
  • Linux基础25-C语言之分支结构Ⅱ【入门级】
  • Flutter - 初体验
  • XML DOM 高级
  • 15. 三数之和(LeetCode 热题 100)
  • PyCharm Terminal 自动切换至虚拟环境
  • Jredis和SpringDataRedis学习笔记
  • 习近平将出席中国—拉美和加勒比国家共同体论坛第四届部长级会议开幕式并发表重要讲话
  • 一周文化讲座|城市移民与数字时代的新工作
  • “爱鸟周”为何不能像FI和花展那样“市区联动”
  • 公示!17个新职业、42个新工种亮相
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 中国中古史集刊高质量发展论坛暨《唐史论丛》创刊四十周年纪念会召开