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

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字体资产不能删除,静态则可以.

相关文章:

Unity TextMesh Pro入门

概述 TextMesh Pro是Unity提供的一组工具&#xff0c;用于创建2D和3D文本。与Unity的UI文本和Text Mesh系统相比&#xff0c;TextMesh Pro提供了更好的文本格式控制和布局管理功能。 本文介绍了TMP_Text组件和Tmp字体资产(如何创建字体资产和如何解决缺字问题),还有一些高级功…...

大疆C++开发面试题及参考答案

虚函数的作用是什么&#xff1f;虚函数机制是如何实现的&#xff1f;虚表指针在内存中的存放位置在哪里&#xff1f; 虚函数主要用于实现多态性。多态是面向对象编程中的一个重要概念&#xff0c;它允许通过基类指针或引用调用派生类中重写的函数。这样可以在运行时根据对象的实…...

极品飞车6里的赛道简介

极品飞车里有很多赛道,赛道分为前向赛道Forward、后向赛道Backward。前向赛道Forward是从A点到B点;后向赛道Backward是前向赛道的逆过程,即从B点到A点。这里介绍极品飞车6的赛道长度、中英文名称翻译、难度等级。 序号赛道英文名赛道中文名总长(km)急弯难度等级1Alpine Trai…...

Swagger学习⑰——@Link注解

介绍 Link 是 Swagger/OpenAPI 3.0 注解库中的一个注解&#xff0c;用于在 OpenAPI 文档中定义链接&#xff08;Link&#xff09;。链接是一种在 API 响应中提供相关操作或资源引用的机制&#xff0c;通常用于描述操作之间的关系或提供额外的操作提示。 Link 注解的作用 Link…...

Cline(原Claude Dev)开源的IDE AI插件,如何搭配OpenRouter实现cursor功能,Cline怎么使用

Cline&#xff08;原Claude Dev&#xff09;是一个开源的IDE AI插件&#xff0c;可以使用你的命令行界面和编辑器的人工智能助手。 你可以直接在VS Code编辑器进行安装。如果你使用过Cursor AI IDE的话&#xff0c;可以尝试最新发布的Cline3.1版本。 在OpenRouter上&#xff0…...

WEB前端-3.1

目录 CSS部分 什么是CSS CSS的书写方式 网页引入CSS的方式 css的颜色、大小、边线 文本和字体样式 CSS选择器 属性选择器 伪类选择器 伪元素选择器 文本样式 display属性 背景样式 精灵图、雪碧图 元素定位 绝对定位 相对定位 浮动定位 浮动 CSS部分 什么是…...

灌区闸门自动化控制系统-精准渠道量测水-灌区现代化建设

项目背景 本项目聚焦于黑龙江某一灌区的现代化改造工程&#xff0c;该灌区覆盖广阔&#xff0c;灌溉面积高达7.5万亩&#xff0c;地域上跨越6个乡镇及涵盖17个村庄。项目核心在于通过全面的信息化建设&#xff0c;强力推动节水灌溉措施的实施&#xff0c;旨在显著提升农业用水的…...

QT中引入OpenCV库总结(qmake方式和cmake方式)

文章目录 前言opencv环境配置一、opencv库获取的两种方式二、qmake和cmake配置2.1、 qmake2.2、cmake2.2.1、引入opencv示例 三、qt与opencv对应关系四、问题 前言 我的软件环境&#xff0c;写在前面 Windows10QT5.12.12VS2017OpenCV4.5.4 opencv环境配置 一、opencv库获取…...

【DAPM杂谈之三】DAPM的初始化流程

本文主要分析DAPM的设计与实现 内核的版本是&#xff1a;linux-5.15.164&#xff0c;下载链接&#xff1a;Linux内核下载 主要讲解有关于DAPM相关的知识&#xff0c;会给出一些例程并分析内核如何去实现的 /**************************************************************…...

消息队列架构、选型、专有名词解释

私人博客传送门 消息队列专有名词解释 | 魔筝炼药师 MQ选型 | 魔筝炼药师 MQ架构 | 魔筝炼药师 MQ顺序消息 | 魔筝炼药师...

Scala语言的计算机基础

Scala语言的计算机基础 Scala是一种现代的编程语言&#xff0c;兼具面向对象和函数式编程的特性&#xff0c;广泛应用于大数据处理、后端开发和分布式系统等领域。本文将围绕Scala语言的基础知识&#xff0c;包括其语法特点、数据结构、函数式编程思想、与Java的关系以及在实际…...

爬虫基础之爬取歌曲宝歌曲批量下载

声明&#xff1a;本案列仅供学习交流使用 任何用于非法用途均与本作者无关 需求分析: 网站:邓紫棋-mp3在线免费下载-歌曲宝-找歌就用歌曲宝-MP3音乐高品质在线免费下载 (gequbao.com) 爬取 歌曲名 歌曲 实现歌手名称下载所有歌曲 本案列所使用的模块 requests (发送…...

书说 MySQL 的悲观锁和乐观锁

什么是乐观锁&#xff1f;什么是悲观锁&#xff1f; 悲观锁&#xff1a; 悲观锁是一种基于悲观态度的控制机制&#xff08;最坏的程度想&#xff0c;每次并发一定会造成阻塞&#xff09;&#xff0c;用于防止数据冲突。它采取预防性措施&#xff0c;在修改数据之前将其锁定&a…...

Linux WEB漏洞

定义&#xff1a;Linux Web 漏洞是指在基于 Linux 操作系统的 Web 应用程序、Web 服务器软件或者相关的网络服务配置中存在的安全弱点。这些漏洞可能导致攻击者未经授权访问敏感信息、篡改网页内容、执行恶意代码&#xff0c;甚至完全控制服务器。 常见类型及原理 SQL 注入漏…...

AIDD - 人工智能药物设计 -深度学习赋能脂质纳米颗粒设计,实现高效肺部基因递送

Nat. Biotechnol. | 深度学习赋能脂质纳米颗粒设计&#xff0c;实现高效肺部基因递送 今天为大家介绍的是来自美国麻省理工和爱荷华大学卡弗医学院团队的一篇论文。可离子化脂质&#xff08;ionizable lipids&#xff09;是脂质纳米颗粒&#xff08;lipid nanoparticles&#…...

Selenium 进行网页自动化操作的一个示例,绕过一些网站的自动化检测。python编程

初级教程 selenium 教程和视频教程s原理与安装 - 白月黑羽 https://www.byhy.net/auto/selenium/01/#chrome%201 Selenium 自动化环境安装_哔哩哔哩_bilibili Selenium 自动化环境安装是Python Selenium Web自动化 2024版 - 自动化测试 爬虫的第2集视频&#xff0c;该合集共…...

力扣 岛屿数量

从某个点找&#xff0c;不断找相邻位置。 题目 岛屿中被“0”隔开后 &#xff0c;是每一小块状的“1”&#xff0c;本题在问有多少块。可以用dfs进行搜索&#xff0c;遍历每一个点&#xff0c;把每一个点的上下左右做搜索检测&#xff0c;当检测到就标记为“0”表示已访问过&a…...

【前端动效】HTML + CSS 实现打字机效果

目录 1. 效果展示 2. 思路分析 2.1 难点 2.2 实现思路 3. 代码实现 3.1 html部分 3.2 css部分 3.3 完整代码 4. 总结 1. 效果展示 如图所示&#xff0c;这次带来的是一个有趣的“擦除”效果&#xff0c;也可以叫做打字机效果&#xff0c;其中一段文本从左到右逐渐从…...

期刊(中英),期刊分区,期刊所在数据库(中英),出版商区别和联系

目录 对期刊、分区、数据库、出版商整体了解期刊&#xff08;中英&#xff09;期刊分区期刊所在数据库总结 出版商 对期刊、分区、数据库、出版商整体了解 下图是我对这四部分的一个理解&#xff0c;其中期刊根据论文使用语言分为中英两种&#xff0c;期刊分区是用来评判论文质…...

LLM中temperature参数设置为0

LLM中 temperature参数设置为0 当模型的temperature参数设置为0时&#xff0c;通常有以下含义&#xff1a; 解码策略角度 意味着采用贪婪解码&#xff08;greedy decoding&#xff09;策略。在每一步生成文本时&#xff0c;模型会选择概率最高的词元&#xff0c;从而使输出具…...

Javase 基础复习 函数式接口 lambda表达式 方法应用

目录 案例1 案例2 1. 函数式接口 (Functional Interface) 特点&#xff1a; 示例&#xff1a; Java 8 引入了几个常用的函数式接口&#xff1a; 2. Lambda 表达式 语法解析&#xff1a; 示例&#xff1a; 3. 方法引用 (Method References) 示例&#xff1a; 4. 方法…...

【39. 组合总和 中等】

题目&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…...

UE小白学习日记

Level UE中的Level(关卡)和Unity中的Scene(场景)在概念和用途上非常相似,都是用来组织和管理3D环境的基本单位。让我为您详细对比一下: 相似之处: 它们都是游戏世界的容器,可以包含游戏对象、光照、地形等元素都支持场景/关卡的切换和加载都可以用来划分游戏内容,比如不同关…...

补充之前的一篇 MySQL 的索引为什么能加快查询速度

在之前的一篇文章中写了 MySQL 的索引为什么能加快查询速度&#xff0c;结合这两篇文章&#xff0c;相信你会对 MySQL 的索引有更深一步的了解 ​首先我们要理解一件事&#xff0c;无论什么数据库&#xff0c;它的数据一定都是存储在硬盘中的&#xff0c;而硬盘和内存之间的读…...

GoLand下载安装教程

一、goland环境配置 1.下载地址 https://golang.google.cn/dl/ 2.下载安装 3.添加环境变量 4.测试环境变量 输出Hello,World! 说明环境配置成功 二、goland安装 1.下载安装 https://www.jetbrains.com/go/download/download-thanks.html 2.激活使用 SFXUSA86FM-eyJsaWNlbnNl…...

GAN的应用

5、GAN的应用 ​ GANs是一个强大的生成模型&#xff0c;它可以使用随机向量生成逼真的样本。我们既不需要知道明确的真实数据分布&#xff0c;也不需要任何数学假设。这些优点使得GANs被广泛应用于图像处理、计算机视觉、序列数据等领域。上图是基于GANs的实际应用场景对不同G…...

[石榴翻译] 维吾尔语音识别 + TTS语音合成

API网址 丝路AI平台 获取 Access token 接口地址&#xff1a;https://open.xjguoyu.cn/api/auth/oauth/token&#xff0c;请求方式&#xff1a;GET&#xff0c;POST Access token是调用服务API的凭证&#xff0c;调用服务API之前需要获取 token。每次成功获取 token 以后只有…...

PHP Filesystem:深入解析与实战应用

PHP Filesystem:深入解析与实战应用 引言 PHP作为一种流行的服务器端编程语言,提供了强大的文件系统操作功能。本文将深入探讨PHP的Filesystem函数,这些函数允许开发者访问和操作服务器上的文件系统。无论是进行基本的文件操作,还是实现复杂的文件管理系统,PHP的Filesys…...

仓颉笔记——写一个简易的web服务并用浏览器打开

创建一个web服务端&#xff0c;同时创建一个客户端去读取这个服务端。 也满足浏览器打开web的需求。 直接上代码。 import net.http.* import std.time.* import std.sync.* import std.log.LogLevel// 1. 构建 Server 实例 let server ServerBuilder().addr("127.0.0.1&…...

yolov5+colab跑起来

教程1.先上传网盘再run 教程2.直接上传解压run 本人过程...

Windows下安装最新版的OpenSSL,并解决OpenSSL不是当前版本的问题,或者安装不正确的问题

文章目录 1. 文章引言1.1 需求描述1.2 简单介绍1.3 支持平台1.4 源码地址1.5 组件介绍2. 下载OpenSSL3. 安装OpenSSL5. 查看安装目录6. 解决OpenSSL的错误1. 文章引言 1.1 需求描述 今天接到一需求,解密php加密后的数据,由于php使用 openssl_encrypt的方式加密,java也需要使…...

HTML5 网站模板

HTML5 网站模板 参考 HTML5 Website Templates...

代码随想录算法训练营第三十二天|509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯

目录 509.斐波那契数 动态规划五部曲&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数组 70.爬楼梯 动态规划五部曲&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;…...

<C++学习>C++ Boost 数学与科学计算教程

C Boost 数学与科学计算教程 Boost 提供了强大的数学与科学计算功能模块&#xff0c;包括常用数学函数、特殊函数、矩阵运算、随机数生成器、统计分析工具等。这些工具覆盖了从基本数学操作到复杂科学计算的广泛场景。 1. Boost.Math 简介 Boost.Math 提供了丰富的数学功能&a…...

Spring Framework 5.3.x源码构建 (jdk-1.8, gradle 7.5.1, idea2024.3)

1、下载jdk安装并配置环境变量&#xff08;自行百度&#xff09; https://www.oracle.com/java/technologies/downloads/#java8 2、下载spring-framework源码&#xff0c;切换分支到5.3.x https://github.com/spring-projects/spring-framework.git 备用地址 https://gitco…...

有心力场的两体问题

有心力场中的两体问题是经典力学中的重要研究对象,中心力场问题通常涉及两个相互作用的物体(例如行星与恒星、电子与原子核等)。为了简化分析,问题往往可以转化为一个等效的单体问题。这种方法大大提高了问题的可解性,是解决两体和多体问题的基础步骤之一。将两体问题简化…...

【Pandas】pandas Series rdiv

Pandas2.2 Series Binary operator functions 方法描述Series.add()用于对两个 Series 进行逐元素加法运算Series.sub()用于对两个 Series 进行逐元素减法运算Series.mul()用于对两个 Series 进行逐元素乘法运算Series.div()用于对两个 Series 进行逐元素除法运算Series.true…...

Openstack持久存储-Swift,Cinder,Manila三者之间的区别

总结不易&#xff0c;给个三连吧&#xff01;&#xff01;&#xff01; 补充&#xff1a; 文件共享存储服务Manila 在OpenStack生态系统中&#xff0c;Cinder和Manila分别提供了两种不同类型的存储服务&#xff0c;类似于传统的SAN&#xff08;存储区域网络&#xff09;和NAS&…...

单片机(MCU)-简单认识

简介&#xff1a; 内部集成了CPU&#xff0c;RAM&#xff0c;ROM&#xff0c;定时器&#xff0c;中断系统&#xff0c;通讯接口等一系列电脑的常用硬件功能。 单片机的任务是信息采集&#xff08;依靠传感器&#xff09;&#xff0c;处理&#xff08;依靠CPU&#xff09;&…...

Redis常见知识点

1、什么是缓存穿透&#xff1f; 缓存穿透是指查询一定某个key是否存在&#xff0c;每次不存在都查询DB会把DB压垮。 解决方案的话&#xff0c;我们通常都会用布隆过滤器来解决。 布隆过滤器&#xff1a;在查找一个数是否在一个集合中使用的&#xff0c;通过对数组长度取模&a…...

SQL进阶实战技巧:统计相同时刻多地登陆的用户?

目录 0 问题描述 1 数据准备 2 代码实现 3 问题拓展 3.1 查询每个用户登录日期的最大空档期...

【数据库初阶】表的增删改语句

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 MySQL…...

水水水水水水

为了拿推广卷&#xff0c;但不想把我原本完整的文章拆成零散的多篇&#xff0c;只能出此下策随便发一篇&#xff0c;认真写的都笔记专栏里 网络技术&#xff1a;数字时代的基础设施 在当今社会&#xff0c;网络技术无疑是推动现代生活和经济发展的核心动力之一。从简单的信息传…...

基于STM32的智能电表可视化设计:ESP8266、AT指令集、python后端Flask(代码示例)

一、项目概述 随着智能家居的普及&#xff0c;智能电表作为家庭用电管理的重要工具&#xff0c;能够实时监测电流、电压及功率&#xff0c;并将数据传输至后台进行分析和可视化。本项目以STM32C8T6为核心&#xff0c;结合交流电压电流监测模块、ESP8266 Wi-Fi模块、OLED显示屏…...

SpringBoot的@Scheduled和@Schedules有什么区别

Scheduled 的详细解析 参数详解 cron: 使用Cron表达式来指定复杂的调度模式。Cron表达式的格式如下&#xff1a; 秒&#xff08;0-59&#xff09;分钟&#xff08;0-59&#xff09;小时&#xff08;0-23&#xff09;日&#xff08;1-31&#xff09;月&#xff08;1-12 或 JAN-…...

Qiskit快速编程探索(进阶篇)

五、量子电路模拟:探索量子世界的虚拟实验室 5.1 Aer模拟器:强大的模拟引擎 在量子计算的探索旅程中,Aer模拟器作为Qiskit的核心组件之一,宛如一座功能强大的虚拟实验室,为开发者提供了在经典计算机上模拟量子电路运行的卓越能力。它打破了硬件条件的限制,使得研究者无…...

【漫话机器学习系列】043.提前停止训练(Early Stopping)

提前停止训练&#xff08;Early Stopping&#xff09; 提前停止&#xff08;Early Stopping&#xff09; 是一种在训练机器学习模型&#xff08;尤其是深度学习模型&#xff09;时常用的正则化技术&#xff0c;用于防止过拟合并提升模型的泛化能力。它通过监控验证集的性能&am…...

Linux(上):基本知识篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Linux初识1 Linux简介2 Linux学习环境配置(1)安装Linux(2)FinalShell远程连接Linux服务器二、Linux基础命令1 Linux目录结构,根目录 /2 Linux命令基础(1)什么是命令、命令行?(2)…...

Python爬虫与1688图片搜索API接口:深度解析与显著收益

在电子商务的浩瀚海洋中&#xff0c;数据是驱动业务决策的核心引擎。阿里巴巴旗下的1688平台&#xff0c;作为全球领先的B2B在线市场&#xff0c;不仅汇聚了海量的商品信息&#xff0c;还提供了丰富的API接口&#xff0c;为开发者提供了强大的数据获取工具。本文将深入探讨1688…...

生物医学信号处理--随机信号通过线性时不变系统

本章主要讨论 (1)输出、输入间自相关函数和功率谱的关系以及两者间的互相关函数和互谱,把它们和系统的冲激响应与频率特性联系起来。这些是用于随机问题的基本关系,将分别讨论连续时间和离散时间两种情况。 (2)初步介绍一些线性系统在处理随机信号时的应用。但是,应该指出,…...