文本预制件 — MRTK2

这些预制件针对Windows Mixed Reality中的呈现质量进行优化。 有关详细信息,请阅读Microsoft Windows 开发人员中心Unity中的“文本”指南。

Prefabs

3DTextPrefab

3D 文本网格预制件 (Assets/MRTK/SDK/StandardAssets/Prefabs/Text) ,在 2 米距离处具有优化的缩放因子。 (请阅读以下说明)

UITextPrefab

UI 文本网格预制件 (Assets/MRTK/SDK/StandardAssets/Prefabs/Text) ,在 2 米距离处具有优化的缩放因子。 (请阅读以下说明)

字体

混合现实工具包中包含的开源字体 (Assets/MRTK/Core/StandardAssets/Fonts) 。

重要

文本 Prefab 使用开放源代码字体“Selawik”。 若要使用具有不同字体的文本预制件,请导入字体文件并按照以下说明进行作。 以下示例演示如何将“Segoe UI”字体与文本预制件配合使用。

导入 Segoe UI 字体文件

  1. 将字体纹理分配给 3DTextSegoeUI.mat 材料。

    分配字体纹理

  2. 在 3DTextSegoeUI.mat 材料上,选择着色器 Custom/3DTextShader.shader。

    分配着色器

  3. 将 Segoe UI 字体和 3DTextSegoeUI 材料分配给预制件中的文本组件。

    分配字体文件和材料

在 Unity 中使用字体

向Unity中的场景中添加新的 3D TextMesh 时,有两个问题在视觉上是显而易见的。 一是字体非常大,二是字体显得很模糊。 还值得注意的是,检查器中默认的“字体大小”值设置为零。 将此零值替换为 13 不会显示大小差异,因为 13 实际上是默认值。

Unity假定添加到场景中的所有新元素的大小为 1 Unity 单位,或 100% 转换比例,这在 HoloLens 上转换为大约 1 米。 对于字体,3D TextMesh 的边界框默认为 1 米高。

字体比例和字号

大多数视觉对象设计器使用点来定义现实世界中的字号及其设计程序。 1米内约有2835 (2834.645666399962) 分。 根据点系统转换为 1 米和Unity的默认 TextMesh 字号 13,简单数学 13 除以 2835 等于 0.0046 (0.00458611116,确切地说) 提供了良好的标准刻度,但有些人可能希望舍入为 0.005。

无论采用哪种方式,将 Text 对象或容器缩放为这些值,不仅允许从设计程序进行字体大小的 1:1 转换,而且还提供了在整个应用程序或游戏中保持一致性的标准。

UI 文本

将基于 UI 或画布的 Text 元素添加到场景中时,大小差异更大。 这两个大小的差异约为 1000%,这会使基于 UI 的文本组件的缩放因子达到 0.00046 (0.000458611116 的精确) 或 0.0005 舍入值。

免责声明:任何字体的默认值都可能受该字体的纹理大小或字体导入Unity的方式的影响。 这些测试基于Unity中的默认 Arial 字体以及其他一种导入的字体来执行。

带缩放因子的字号

Text3DSelawik.mat

支持封闭的 3DTextPrefab 材料。 需要 3DTextShader.shader

默认字体材料与 3DTextSegoeUI 材料

Text3DShader.shader

支持遮挡的 3DTextPrefab 着色器。