Unity TextMesh Pro入门

概述

TextMesh Pro是Unity提供的一组工具,用于创建2D和3D文本。与Unity的UI文本和Text Mesh系统相比,TextMesh Pro提供了更好的文本格式控制和布局管理功能。

本文介绍了TMP_Text组件和Tmp字体资产(如何创建字体资产和如何解决缺字问题),还有一些高级功能可能在以后的时候完善.

参考文章:Unity TextMeshPro的字体消失的问题_unity 字体不显示-CSDN博客


主要优势

  • 文本格式控制:包括字符、单词、行和段落的间距控制。
  • 字距调整(Kerning)
  • 文本对齐:支持文本的对齐(包括两端对齐)。
  • 超链接:支持文本中的链接。
  • 丰富的文本标签:提供超过30种富文本标签。
  • 多字体支持:可使用多个字体样式。
  • 精灵支持:可以在文本中嵌入精灵。
  • 自定义样式:支持创建和应用自定义文本样式。
  • 高级文本渲染:通过自定义着色器实现更加精细的文本渲染。

开始使用

TextMesh Pro包已经包含在Unity编辑器中,因此无需单独安装。你可以通过Package窗口切换到不同版本的TextMesh Pro。
要开始使用TextMesh Pro,首先需要导入TMP Essential Resources包,这可以在后续步骤中完成。

导入所需资源

  1. 从Unity菜单选择 Window > TextMeshPro > Import TMP Essential Resources。
  2. 这会将必要的资源添加到项目的TextMesh Pro文件夹中。

导入示例和附加资源

TextMesh Pro还包括一些示例和附加资源,有助于学习其各种功能。

  1. 从Unity菜单选择 Window > TextMeshPro > Import TMP Examples & Extras。
  2. 这会将示例和附加资源添加到项目的 TextMesh Pro > Examples & Extras 文件夹中。

或者直接创建一个UI.

如果没有导入资源那么会弹出一个对话框.第一个按钮代表导入基本资源,导入后可以选择关闭该对话框,这是使用TextMesh Pro所必须得,第二个按钮是一些示例和素材,这不是必须的.

导入后一个目录会出现在Assets,如果点击了第二个按钮那么该目录还会额外多出一个示例目录.

老版本UI的Text跑到了这里


创建文本

在场景中创建文本,可以添加TextMesh Pro的GameObject。有两种类型的TextMesh Pro GameObject:

  1. TextMesh Pro UI Text GameObject:使用Unity的UI系统,为Canvas上的文本设计。

  2. TextMesh Pro 3D Text GameObject:像普通的3D GameObject一样在场景中显示。

TextMesh Pro UI Text GameObjects

TextMesh Pro UI文本对象使用Unity的UI系统,依赖Canvas。

创建TextMesh Pro UI Text GameObject:

  1. 从菜单中选择 GameObject > UI > TextMesh Pro - Text。

  2. 在TextMesh Pro (UGUI) Inspector面板中输入文本内容。

  3. 根据需要调整UI文本的属性。

TextMesh Pro 3D Text GameObjects

TextMesh Pro 3D文本对象与UI文本对象非常相似,但不像UI对象那样依赖于Canvas,而是作为普通的3D对象出现在场景中。

创建TextMesh Pro 3D Text GameObject:

  1. 从菜单中选择 GameObject > 3D GameObject > TextMesh Pro - Text。

  2. 在TextMesh Pro Inspector面板中输入文本内容。

  3. 根据需要调整3D文本的属性。


UI Text GameObjects

默认情况下,TextMesh Pro UI文本对象具有以下组件:

  1. Rect Transform
    控制GameObject在Canvas上的位置和大小。

  2. Canvas Renderer
    渲染GameObject在Canvas上的显示。

  3. TextMesh Pro UGUI (脚本)
    包含要显示的文本以及控制文本外观和行为的属性。以下是这些属性的详细说明:

  4. Material
    一个Unity材质,使用TextMesh Pro着色器来进一步控制文本的外观。更多信息,请参阅Shaders部分。

重点看下组件本身

主要设置属性与功能

属性功能
A. Text输入要显示的文本,以及任何富文本标记。
B. Font指定使用的字体,以及基本字体属性(如字体大小、样式等)。
C. Color定义文本的基础颜色或颜色渐变。
D. Spacing控制字符、单词、行和段落之间的间距。
E. Alignment控制文本的水平和垂直对齐方式。
F. Wrapping and Overflow控制单词换行,并定义当文本超出显示区域时的处理方式。
G. UV Mapping控制如何将纹理映射到文本的面和轮廓上。
H. Extra Settings提供额外的选项来控制文本的外观和行为。

文本部分

文本部分是输入要显示的文本,并可选择使用富文本标记进行自定义。

属性与功能

  • Text
    输入要显示的文本。

  • Enable RTL Editor
    启用此选项以使文本从右至左显示,而不是从左至右。

    启用后,Inspector面板会显示一个额外的输入字段,您可以查看并直接编辑反向文本。
    文本会在显示或渲染之前被反转。

主要设置

包含定义文本基本外观所需的属性。通过更改或编辑材质进一步自定义文本的外观。

字体设置面板是选择文本字体并自定义字体样式的地方。

字体属性与功能

属性功能
Font Asset选择TextMesh Pro GameObject使用的字体资产。TextMesh Pro随附多个字体资产,您也可以从标准字体文件(如TrueType字体,ttf)创建其他字体。注:您可以在TextMesh Pro设置中为新文本对象设置默认字体资产。
Material Preset选择字体的材质。每个字体资产都有一个默认材质,但您也可以为其创建自定义材质。此预设列表包括所有名称中包含字体资产名称并使用相应字体图集纹理的材质。
Font Style启用标准文本样式选项。这些选项可以任意组合使用,除了大小写选项(小写、大写和小型大写),它们是互斥的。
B (Bold)加粗文本。加粗文本的外观由字体资产属性定义。
I (Italic)斜体文本。斜体文本的外观由字体资产属性定义。
U (Underline)为文本添加下划线。这会在基线下方渲染一条额外的线。
S (Strikethrough)为文本添加删除线。这会在基线上方渲染一条额外的线。
ab (Lowercase)在渲染之前将文本转换为小写。这不会更改文本字段中的文本大小写。
AB (Uppercase)在渲染之前将文本转换为大写。这不会更改文本字段中的文本大小写。
SC (Small Caps)使用小型大写字母。文本显示为全大写字母,但您实际输入的大写字母会更大。
Font Size指定文本显示的大小(单位:磅)。
Auto Size启用此选项以自动设置字体大小,基于自动调整选项。启用后,TextMesh Pro会多次布局文本以找到合适的大小。这个过程资源密集,因此避免频繁变化的动态文本使用自动调整。提示:对于静态文本,您可以启用自动调整,记下计算出的字体大小(在字体大小字段中显示),然后禁用自动调整并手动应用计算出的大小。
Auto Size Options定义自动调整文本大小的基本规则。
Min指定可接受的最小字体大小(单位:磅)。
Max指定可接受的最大字体大小(单位:磅)。
WD%指定调整文本大小时可接受的最大字符宽度减少量。TextMesh Pro会压缩字符以使它们更高,这通常仅适用于数字。
Line调整行高。这对于将较大字体适应到给定空间非常有用。

颜色属性与功能

属性功能
Vertex Color选择文本的主颜色。在TextMesh Pro GameObject或其材质中定义的任何颜色和纹理将与此颜色相乘。
Color Gradient启用此选项为每个字符的精灵应用颜色渐变。然后可以设置渐变类型和颜色,或者应用颜色渐变预设。渐变颜色会与主颜色相乘。如果主颜色为白色,则仅显示渐变颜色;如果为黑色,则完全看不见渐变颜色。
Color Preset选择颜色渐变预设。应用预设后,其颜色模式和颜色将替换Inspector中的文本局部属性。编辑这些属性会修改预设,从而影响所有使用该预设的TextMesh Pro GameObject。设置此属性为None可以恢复为文本的局部渐变属性。
Color Mode选择应用的颜色渐变类型。TextMesh Pro会单独为每个字符应用渐变。
Single均匀颜色,修改基础的Vertex Color。
Horizontal Gradient两种颜色的渐变,颜色从字符的一侧发散。
Vertical Gradient两种颜色的渐变,一种颜色从字符的顶部发散,另一种从底部发散。
Four Corners Gradient四种颜色的渐变,每种颜色从字符的一个角落发散。
Colors选择每个渐变颜色。根据渐变类型,提供的颜色数量会有所不同,颜色字段会按渐变中的颜色位置排列(左右、上下或四角)。可以通过以下方式设置颜色:1. 色板:点击打开颜色选择器。2. 吸管工具:点击从屏幕的任何部分选择颜色。3. 十六进制值:直接输入RGBA的十六进制值。
Override Tags启用此选项以忽略任何更改文本颜色的富文本标签。

间距设置与功能

控制字符、单词、行和段落之间的间距,可以微调单个TextMesh Pro GameObjects的文本.
 

属性功能
Character设置此TextMesh Pro GameObject中文本字符之间的间距。
Word设置此TextMesh Pro GameObject中文本单词之间的间距。
Line设置此TextMesh Pro GameObject中文本行之间的间距。
Paragraph设置此TextMesh Pro GameObject中文本段落之间的间距。段落通过显式换行符定义。

对齐设置与功能

对齐设置

一级选项子选项功能
Horizontal Alignment
Left, Center, Right

将文本水平放置在显示区域内,不改变文本本身。

Justified, Flush

将文本拉伸以填充显示区域的宽度,通过增加单词和字符之间的距离。

Wrap Mix选项控制单词和字符间距之间的平衡。

Justified模式不会拉伸段落的最后一行,而Flush模式会。

Geometry Center根据网格而非文本度量来居中显示文本。在某些情况下,这种模式的效果可能比常规居中对齐效果更好。
Vertical Alignment
Top, Middle, Bottom将文本垂直放置在显示区域内,不改变文本本身。
Baseline将文本的基线对齐到显示区域的中间。这在处理单行文本时非常有用。
Midline使用文本网格边界来决定垂直位置,而不是行度量。对于紧凑空间特别有用,避免字符的上升和下降部分超出。
Capline将文本的第一行中线与显示区域中间对齐。
Wrap Mix (W <-> C)

当水平对齐设置为Justified或Flush时,调整额外的单词间距和字符间距之间的平衡。


换行与溢出设置与功能

换行与溢出设置

属性功能
Wrapping启用或禁用单词换行。
OverflowOverflow文本超出显示区域,仍然进行换行(如果启用了换行)。
Ellipsis截断文本并插入省略号(…),表示有部分文本被省略。
Masking类似于Overflow,但着色器隐藏超出显示区域的所有内容。
Truncate当文本不适应显示区域时,直接截断文本,不显示超出部分。
Scroll Rect传统模式,类似于Masking。仅用于与旧版TextMesh Pro项目的兼容性,建议新项目使用Masking模式。
Page将文本分为多页,每页适应显示区域。你可以选择显示的页面,并通过富文本插入页面换行。
Linked将文本扩展到另一个TextMesh Pro GameObject,适用于创建多列文本。

UV Mapping

一些 TextMesh Pro 着色器允许你将一个或多个图像纹理应用于文本。这些选项控制这些纹理如何拉伸以适应文本。

还可以在着色器本身中编辑特定于着色器的纹理选项。可用的选项取决于使用的着色器。

在给文本添加纹理时,请确保您的纹理资产的 Wrap Mode 设置为 Repeat。否则,纹理在应用到文本时可能会发生严重的失真。


属性详细说明
Horizontal Mapping指定在使用支持纹理的着色器时,纹理如何水平映射到文本上。
Character将纹理水平拉伸到每个字符的精灵上。
Line将纹理水平拉伸到每行的整个宽度。
Paragraph将纹理水平拉伸到整个文本上。
Match Aspect

水平缩放纹理,使其保持其长宽比,并且不变形。

当使用此水平映射模式时,垂直映射设置决定纹理如何映射到文本,并且必须设置为不同于 Match Aspect。

Vertical Mapping指定在使用支持纹理的着色器时,纹理如何垂直映射到文本上。
Character将纹理垂直拉伸到每个字符的精灵上。
Line将纹理垂直拉伸到每行的整个宽度。
Paragraph将纹理垂直拉伸到整个文本上。
Match Aspect

垂直缩放纹理,保持其纵横比,不被变形。

当使用此垂直映射模式时,水平映射设置决定纹理如何映射到文本,并且必须设置为不同于 Match Aspect。

Line Offset

当水平映射设置为 Line、Paragraph 或 Match Aspect 时,设置此值以为每一行添加水平纹理偏移。

此值将添加到您在着色器中指定的 Offset X 值。


额外设置

进一步控制文本外观和行为的选项。


属性详细说明
Margins

设置正值以增加文本与文本容器边界之间的距离。

您可以分别设置左、上、右、下边距。负值会使文本超出文本容器的边界。您还可以通过在场景视图中拖动文本容器控件(黄色矩形)的手柄来调整边距。

Geometry Sorting

每个字符包含在一个四边形中。几何排序控制 TextMesh Pro 如何排序这些四边形。

这决定了当两个四边形重叠时,哪个字符会显示在上面。

NormalTextMesh Pro 按照网格中出现的顺序绘制四边形。当两个四边形重叠时,“较晚”的四边形会显示在“较早”四边形之上。
ReverseTextMesh Pro 反向顺序绘制四边形。当两个四边形重叠时,“较早”的四边形会显示在“较晚”四边形之上。
Rich Text禁用此选项以关闭 TextMesh Pro GameObject 的富文本支持。当禁用富文本支持时,标签不会被解析并且会作为常规文本进行渲染。
Raycast Target启用此选项以使此 TextMesh Pro GameObject 成为射线检测目标。禁用此选项会使 UI 在确定光标与哪个对象交互时忽略此 TextMesh Pro GameObject。
Parse Escape Characters启用此选项以使 TextMesh Pro 将反斜杠转义字符解析为特殊字符。例如,\n 被解析为换行符,\t 作为制表符等。注:此选项仅适用于渲染文本,代码中转义字符已由编译器解析。
Visible Descender使用脚本逐步显示文本时使用此选项。启用它可以先显示文本的底部,然后随着新行的显示向上移动;禁用它则按从上到下的顺序显示文本。要设置这种类型的文本显示,必须将垂直对齐方式设置为底部。
Sprite Asset
Kerning启用此选项以为此 TextMesh Pro GameObject 切换字距调整。字距调整在 GameObject 的字体资产中定义。如果新对象使用没有字距调整数据的字体,启用此设置不会产生任何效果。
Extra Padding启用此选项以为字符精灵添加额外的填充。TextMesh Pro 创建精灵以适应可见文本,但结果并不总是完美的。此设置可以减少字符在其精灵边界处被裁剪的几率。

字体资产

概述


要在 TextMesh Pro 中使用不同的字体,需要创建字体资产。可以从 Unity 字体资产创建 TextMesh Pro 字体资产。这是两个概念,可以利用前者生成后者,你理解前者是不同的风格(比如可以是宋体,或者是微软雅黑),后者是TMP_Text组件需要引用的资源.

这是前者,可以从网上下载一些开源资产

是一个 .otf类型的文件

这是后者,我利用前者生成了它.

每个 TextMesh Pro 字体资产都有两个子资产:

  • 字体图集:一个黑白或灰度纹理文件,包含字体资产中包含的所有字符。
  • 字体材质:一个材质,用于控制 TextMesh Pro 文本的外观,使用的是 TextMesh Pro 的其中一个着色器。

字体资产必须位于特定的文件夹中,以便 TextMesh Pro 能够找到它们并将其包含在构建中。要更改字体资产的默认文件夹,进入 TextMesh Pro 设置并设置 Default Font Asset > Path 选项。

创建字体资产


要创建一个 TextMesh Pro 字体资产,可以使用 TextMesh Pro 字体资产创建器

也可以从 Unity 主菜单创建一个空的 TextMesh Pro 字体资产。空字体资产默认不包含任何字符,必须稍后添加它们。要创建空的 TextMesh Pro 字体资产,请选择一个 Unity 字体资产,然后从菜单中选择 Asset > Create > TextMeshPro > Font Asset

使用创建器和直接右键Unity字体资产创建的TMP字体资产是有区别的,正好借此讲一下TMP字体资产的原理.

比如我选择直接右键创建,那么

注意这里生成的TMP字体资产是动态的.

如果不明白这个动态是什么意思的话,展开那个箭头(Project窗口设置为两行展示才能展开箭头)。

 这个黑色的贴图是把你字体第一次挂在Text上生成的,它是一个画布,下一步你就知道这有什么用了。

我将该资产给到UI使用

注意画布不存在"张三李四王五"字眼,

我在输入框输入张三李四王五,这些字眼原本不存在"黑布"上,因为我的输入,他们被记录到黑布上了

这就是动态的意思,它会动态存储自身不存在的字符.然后在需要的时候拿出来使用.

解决缺字问题

那么问题来了,不妨设想一下,这个图满了会怎么样?

比如这个TMP被用来展示一些动态读取的网络资源的文字,那么就可能被填满,那么会

左边缺少的字就是因为那是画布上不存在的字,却有没有地方把它印上去了.

我们可以扩大画布

比如将1024乘1024增大为2048乘2048.

同时编辑器调试的时候可能会将一些脏数据添加到"黑布",使用Clear 选项在打包的时候清除脏数据

或者使用静态,结合动态一起使用

下面使用创建器生成Tmp字体资产,只需要将Unity字体资产拖过去,同时从网上查找常用字资源(这是一个txt文件).

然后点击生成按钮,这实际上就是提前将很多字填到动态资产,然后转为静态(应该是这样).

使用该方式遇到了无法正确生成Tmp资产的情况,生成一个错误资产(未知原因,只能删除重试)

这样默认就是静态的.有一个点也要注意:同样是使用合适尺寸的"黑布",确保能容纳大量字符.

这样静态资产给那些不变的UI使用,动态的给不确定的UI使用.

还有一个问题:我上面使用一个txt生成的字体,万一还是有缺失的字怎么办呢?(静态不像动态那样,创建的时候如果没有这个字就是不会显示这个字)

点击这个按钮

搜索你缺失的那个字的unicode编码补充进去,然后重新生成一下并保存.

当然,应该也可以将静态的设为动态,然后将缺的字录入,然后再转回静态(未做尝试).

最后要注意的是:动态相对静态要更耗费性能,同时动态Tmp资产依赖的Unity字体资产不能删除,静态则可以.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952906.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法之链表: LeetCode 19. 删除链表的倒数第 N 个结点 (Ts版)

删除链表的倒数第 N 个结点 https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示…

【STM32-学习笔记-2-】外部中断

文章目录 外部中断Ⅰ、EXIT函数Ⅱ、EXTI_InitTypeDef结构体参数①、EXTI_Line②、EXTI_LineCmd③、EXTI_Mode④、EXTI_Trigger Ⅲ、NVIC函数Ⅳ、NVIC_InitTypeDef结构体参数①、NVIC_IRQChannel②、NVIC_IRQChannelCmd③、NVIC_IRQChannelPreemptionPriority④、NVIC_IRQChanne…

利用 awk 定制化处理大量数据的计算

问题 有上万行&#xff08;甚至更多&#xff09;不断递增的浮点数&#xff08;每行一个&#xff09;&#xff0c;怎么将它们每四个一组计算每组第四个和第一个之间的差值&#xff0c;并打印输出计算结果&#xff1f; 例如文件 data 有以下数据&#xff1a; 2.699350 2.69935…

llama.cpp 模型可视化工具 GGUF Visualizer

llama.cpp 模型可视化工具 GGUF Visualizer 1. GGUF Visualizer for VS Code (gguf-viz)1.1. Features1.2. Extension Settings References GGUF Visualizer https://marketplace.visualstudio.com/items?itemNameAgainstEntropy.gguf-viz 1. GGUF Visualizer for VS Code (g…

10,STL——list类

一&#xff0c;list类的介绍和使用 1&#xff0c;了解list类 1. &#xff09;list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. &#xff09;list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关…

Guilite字库工具

目录 前言 使用方法 离线字库解析 工具链接 前言 最近通过Qt写了一个Guilite字库工具&#xff0c;相比原始工具&#xff0c;主要有以下几个优点&#xff1a; &#xff08;1&#xff09;支持同时生成多套字库 &#xff08;2&#xff09;支持离线字库生成 &#xff08;3&a…

【C++】深入解析pop_back()方法及其应用

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;什么是 pop_back()&#xff1f;定义与功能使用场景 &#x1f4af;深入解析代码示例基础示例分析示例代码分析 空字符串上的 pop_back() 调用错误示例错误原因分析 &#x1…

Java Web开发基础:HTML的深度解析与应用

文章目录 前言&#x1f30d;一.B/S 软件开发架构简述&#x1f30d;二.HTML 介绍❄️2.1 官方文档❄️2.2 网页的组成❄️2.3 HTML 是什么❄️2.4html基本结构 &#x1f30d;三.HTML标签1.html 的标签/元素-说明2. html 标签注意事项和细节3.font 字体标签4.标题标签5.超链接标签…

第三十六章 Spring之假如让你来写MVC——拦截器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

IDEA中创建maven项目

1. IDEA中创建maven项目 在IDEA中创建Maven项目&#xff0c;前提是已经安装配置好Maven环境。如还未配置安装Maven的&#xff0c;请先下载安装。如何下载安装&#xff0c;可参考我另外篇文章&#xff1a;maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…

MACPA:fMRI连接性分析的新工具

摘要 不同脑区的共同激活为它们之间的功能交互或连接提供了一个有价值的衡量指标。元分析连接模型(MACM)是一种经过充分验证的研究某一特定区域共激活模式的方法&#xff0c;该方法对基于任务的功能磁共振成像(task-fMRI)数据进行种子点(seed-based)元分析。虽然MACM是一种强大…

React中createRoot函数原理解读——Element对象与Fiber对象、FiberRootNode与HostRootNode

【2024最新版】React18 核心源码分析教程&#xff08;全61集&#xff09; Element对象与Fiber对象 在 React 中&#xff0c;Element 对象 和 Fiber 对象 是核心概念&#xff0c;用于实现 React 的高效渲染和更新机制。以下是它们的详细解读&#xff1a; 1. Element 对象 定…

【C】初阶数据结构1 -- 时间复杂度与空间复杂度

目录 1 数据结构 2 算法 3 复杂度 1&#xff09; 时间复杂度 2&#xff09; 空间复杂度 4 提升算法能力的两点建议 1&#xff09; 画图 2&#xff09; 多实践&#xff0c;多上手写代码 重点一 数据结构的定义 1 数据结构 数据结构是计算机存储、组织数据的…

TypeScript Jest 单元测试 搭建

NPM TypeScript 项目搭建 创建目录 mkdir mockprojectcd mockproject初始化NPM项目 npm init -y安装TypeScript npm i -D typescript使用VSCode 打开项目 创建TS配置文件tsconfig.json {"compilerOptions": {"target": "es5","module&…

一.项目课题 <基于TCP的文件传输协议实现>

客户端代码 需要cJSON.c文件和cJSON.h文件 在这里插入代码片#include "myheadth.h" #include "myfun.h"#define TIME 10 int sockfd; void heartbeat(int signum) {cJSON* root cJSON_CreateObject();cJSON_AddStringToObject(root,"request"…

C#调用OpenCvSharp实现图像的膨胀和腐蚀

图像膨胀和腐蚀操作属于图像处理中常用的形态学操作&#xff0c;其原理都是采用特定小矩形&#xff08;核矩形&#xff09;&#xff0c;将其中心位置与图像中的每个像素对齐后&#xff0c;对重合位置的像素执行特定处理后&#xff0c;将处理结果保存到中心位置对应的像素处&…

新活动平台建设历程与架构演进

01 前言 历时近两年的重新设计和迭代重构&#xff0c;用户技术中心的新活动平台建设bilibili活动中台终于落地完成&#xff01;并迎来了里程碑时刻 —— 接过新老迭代的历史交接棒&#xff0c;从内到外、从开发到搭建实现全面升级&#xff0c;开启了活动生产工业化新时代&#…

一个好用的C++数据库操作库:OTL

目录 1.简介 2.OTL库的核心类 3.OTL使用 4.使用OTL时注意事项 4.1.多线程初始化 4.2.OTL支持连接池 4.3.大字段的读取方式 4.4.指定数据库类型 4.5.异常处理 5.下载地址 6.总结 1.简介 OTL&#xff08;Oracle, ODBC and DB2-CLI Template Library&#xff09;是一个…

高级生化大纲

一&#xff0c;蛋白质化学&#xff1a; 蛋白质分离是生物化学和分子生物学研究中的一项基本技术&#xff0c;用于根据蛋白质的物理和化学特性将其从混合物中分离出来。 1. 离心分离法 离心分离法利用离心力来分离不同质量或密度的颗粒和分子。 差速离心&#xff1a;通过逐…

linux网络 | http结尾、理解长连接短链接与cookie

前言&#xff1a;本节是http章节的最后一部分&#xff0c;主要解释一些小概念。讲解到了HTTP的方法&#xff0c;表单&#xff0c; 重定向等等。 现在废话不多说&#xff0c; 开始我们的学习吧。 ps&#xff1a;本节内容都是概念&#xff0c; 知道就行&#xff0c; 友友们放心观…