ygtu

Unity3D :导航区域和成本

Unity3D :导航区域和成本

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 导航区域和成本 导航区域 (Navigation Areas) 定义了穿越特定区域的难度,在寻路期间将优先选择成本较低的区域。此外,每个导航网格代理 (NavMesh Agent) 都有一个_区域遮罩 (Area Mask)_,可用于指定代理可以移动的区域。 在上面的示例中,区域类型用于两种常见用例: * Water 区域:通过分配更高的成本使该区域的行走成本更高,从而应对在浅水上行走速度较慢的情况。 * Door 区域:让该区域可由特定角色访问,从而创建人类可以但僵尸不能穿过门的情况。 可将区域类型分配给导航网格烘焙中包含的每个对象,此外,每个网格外链接都有一个属性用于指定区域类型。 寻路成本 简而言之,通过成本可以控制寻路器 (pathfinder) 在寻路时优先选择的区域。例如,如果将某个区域的成本设置为 3.0,则意味着跨越该区域的行程将是其他替代路线的三倍。 要完全了解成本的作用,让我们来看看寻路器的工作原理。 Unity 使用 A* 计算导航网格上的最短路径。A* 适
6 min read
Unity3D :构建高度网格以准确放置角色
Unity3D

Unity3D :构建高度网格以准确放置角色

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 构建高度网格以准确放置角色 高度网格 (Height Mesh) 可用于将角色更准确地放置在可行走表面上。 在导航时,导航网格代理 (NavMesh Agent) 被约束在导航网格的表面上。由于导航网格是可行走空间的近似形状,因此在构建导航网格时会使某些特征扁平化。例如,楼梯可能在导航网格中显示为斜坡。如果游戏需要准确放置代理,则应在烘焙导航网格时启用 Height Mesh 构建。可在 Navigation 窗口的 Advanced 设置下找到该设置。请注意,构建高度网格将在运行时占用内存和处理资源,并需要稍微更长一点的时间来烘焙导航网格。 由3D建模学习工作室整理翻译,转载请注明出处! 上一篇:Unity3D :自动构建网格外链接 (mvrlink.com) 下一篇:Unity3D :导航区域和成本 (mvrlink.com)
1 min read
Unity3D :自动构建网格外链接
Unity3D

Unity3D :自动构建网格外链接

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 自动构建网格外链接 可自动检测网格外链接 (Off-Mesh Link) 的一些用例。两个最常见的用例为:_掉下 (Drop-Down)_ 和_跳过 (Jump-Across)_。 * 掉下链接的作用是从平台上掉下。 * 跳过链接的作用是跳过缝隙。 为了自动找到跳跃位置,构建过程沿着导航网格的边缘行走,并检查跳跃的着陆位置是否在导航网格上。如果跳跃轨迹畅通无阻,则会创建网格外链接。 让我们来设置网格外链接的自动生成。如果您不熟悉导航网格烘焙,请查看构建导航网格。 首先,需要标记场景中的跳跃_起始位置_对象。为此,需要在 Navigation 窗口_中的 Objects_ 选项卡下选中 Generate Off-Mesh Links 选项。 第二步是设置掉下和跳过轨迹: * 掉下链接的生成由 Drop Height 参数控制。该参数可控制将要连接的最高掉落高度,将值设置为 0 将禁用生成。 * 定义掉下链接的轨迹时应使水平行程
3 min read
Unity3D :创建网格外链接
Unity3D

Unity3D :创建网格外链接

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 创建网格外链接 网格外链接 (Off-Mesh Link) 用于创建穿过可步行导航网格表面外部的路径。例如,跳过沟渠或围栏,或在通过门之前打开门,全都可以描述为网格外链接。 我们将添加一个网格外链接组件来描述从上层平台到地面的跳跃。 1. 首先创建两个圆柱体:__Game Object > 3D Object > Cylinder__。 2. 可将圆柱体的比例设置为 (0.1, 0.5, 0.1) 以便于使用它们。 3. 将第一个圆柱体移动到上层平台的边缘,靠近导航网格表面。 4. 将第二个圆柱体放在地面上,靠近导航网格,在链接应着陆的位置。 5. 选择左侧的圆柱体,并为其添加网格外链接组件。从 Inspector 中选择 Add Component,然后选择 Navigation > Off Mesh Link。
2 min read
Unity3D :创建导航网格障碍物
Unity3D

Unity3D :创建导航网格障碍物

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 创建导航网格障碍物 导航网格障碍物 (NavMesh Obstacle) 组件可用于描述代理在导航时应避开的障碍物。例如,代理应该在移动时避开物理控制的物体,例如板条箱和木桶。 我们将添加一个板条箱来阻挡该关卡顶部的通道。 1. 首先创建一个立方体来表现板条箱:__Game Object > 3D Object > Cube__。 2. 将立方体移动到平台顶部,立方体的默认大小很适合板条箱,因此请保持原样。 3. 将一个导航网格障碍物组件添加到立方体。从 Inspector 中选择 Add Component,然后选择 Navigation > NavMesh Obstacle。 4. 将障碍物的形状设置为盒体 (Box);更改形状将使中心和大小自动适应渲染网格。 5. 将一个刚体添加到障碍物。从 Inspector 中选择 Add Component,然后选择 Physics > Rigid Body。
2 min read
Unity3D :创建导航网格代理
Unity3D

Unity3D :创建导航网格代理

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 创建导航网格代理 为关卡烘焙导航网格后,即可创建能够在场景中导航的角色了。我们将使用圆柱体构建原型代理,并将代理设置为运动状态。为实现此目的,需要使用导航网格代理 (NavMesh Agent) 组件和简单脚本。 首先,让我们创建角色: 1. 创建一个圆柱体:__GameObject > 3D Object > Cylinder__。 2. 默认的圆柱体尺寸(高度 2 和半径 0.5)适用于人形代理,因此我们将这些尺寸保持原样。 3. 添加一个导航网格代理组件:__Component > Navigation > NavMesh Agent__。 现在已设置简单的导航网格代理来准备接收命令! 开始尝试使用导航网格代理时,很可能需要根据角色大小和速度调整代理的尺寸。 __导航网格代理__组件将负责角色的寻路和移动控制。在脚本中,导航的设置十分简单,只需设置所需的目标点:导航网格代理可从此处进行所有内容的处理。 // MoveTo.cs using UnityE
3 min read
Unity3D :高级导航网格烘焙设置
Unity3D

Unity3D :高级导航网格烘焙设置

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 高级导航网格烘焙设置 Min Region Area 借助 Min Region Area 高级构建设置,可剔除未连接的小型导航网格区域。表面积小于指定值的导航网格区域将被移除。 请注意,尽管有 Min Region Area 设置,可能也无法删除某些区域。导航网格是以区块网格形式并行构建而成的。如果某个区域跨越区块边界,则不会移除该区域。此情况的原因是区域修剪发生在构建过程中无法访问周围区块的阶段。 体素大小 (Voxel Size) 通过 Manual Voxel Size 设置可更改烘焙过程的准确度。 导航网格烘焙过程使用体素化从任意级别几何体构建导航网格。在算法的第一轮中,场景被光栅化为体素,然后提取可行走表面,最后将可行走表面变成导航网格。体素大小描述了生成的导航网格表示场景几何体的准确程度。 默认的精度设置为每个代理半径为 3 个体素,即整个代理宽度为 6 个体素。此设置可在精确度和烘焙速度之间实现良好折衷。体素大小减半将使内存使用量增加 4 倍,
4 min read
Unity3D :构建导航网格
Unity3D

Unity3D :构建导航网格

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 构建导航网格 从关卡几何体创建导航网格的过程称为导航网格烘焙 (NavMesh Baking)。该过程收集所有标记为 Navigation Static 的游戏对象的渲染网格和地形,然后处理它们以创建近似于关卡的可行走表面的导航网格。 在 Unity 中,导航网格生成方式是在 Navigation 窗口(菜单:__Window__ > AI > __Navigation__)中进行处理的。 为场景构建导航网格可以通过 4 个快速步骤完成: 1. 选择应影响导航的场景几何体:可行走表面和障碍物。 2. 选中 Navigation Static 复选框以便在导航网格烘焙过程中包括所选对象。 3. 调整烘焙设置以匹配代理大小。 * Agent Radius 定义代理中心与墙壁或窗台的接近程度。 * Agent Height 定义代理可以达到的空间有多低。 * Max Slope 定义代理走上坡道的陡峭程度。 * Step Height 定义代理可以踏上的障碍物的高度。 1.
4 min read
Unity3D :导航系统的内部工作原理
Unity3D

Unity3D :导航系统的内部工作原理

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 导航系统的内部工作原理 当您希望智能地移动游戏中的角色(或者 AI 行业中所称的代理)时,必须解决两个问题:如何_推断_关卡来寻找目标,然后如何_移动_到该位置。这两个问题是紧密相关的,但性质却截然不同。关卡推断问题更具全局性和静态性,因为需要考虑整个场景。移动到目标更具局部性和动态性,只考虑移动的方向以及如何防止与其他移动的代理发生碰撞。 可行走区域 导航系统需要自己的数据来表示游戏场景中的可行走区域。可行走区域定义了代理可在场景中站立和移动的位置。在 Unity 中,代理被描述为圆柱体。可行走区域是通过测试代理可站立的位置从场景中的几何体自动构建的。然后,这些位置连接到场景几何体之上覆盖的表面。该表面称为导航网格(简称 NavMesh)。 导航网格将该表面存储为凸多边形。凸多边形是一种有用的表示,因为我们知道多边形内的任意两点之间没有障碍物。除了多边形边界之外,我们还存储有关哪些多边形彼此相邻的信息。这使我们能够推断整个可行走区域。 寻路 要寻找场景中两个位置之间的路径,我们首先需
7 min read

Unity3D :Unity 中的导航系统

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Unity 中的导航系统 导航系统可让您创建能够在游戏世界中导航的角色。该系统让角色能够理解自身需要走楼梯才能到达二楼或跳过沟渠。Unity 导航网格 (NavMesh) 系统包含以下部分: * 导航网格(即 Navigation Mesh,缩写为 NavMesh)是一种数据结构,用于描述游戏世界的可行走表面,并允许在游戏世界中寻找从一个可行走位置到另一个可行走位置的路径。该数据结构是从关卡几何体自动构建或烘焙的。 * 导航网格代理 (NavMesh Agent) 组件可帮助您创建在朝目标移动时能够彼此避开的角色。代理使用导航网格来推断游戏世界,并知道如何避开彼此以及移动的障碍物。 * 网格外链接 (Off-Mesh Link) 组件允许您合并无法使用可行走表面来表示的导航捷径。例如,跳过沟渠或围栏,或在通过门之前打开门,全都可以描述为网格外链接。 * 导航网格障碍物 (NavMesh Obstacle) 组件可用于描述代理在世界中导航时应避开的移动障碍物。由物理系统控制的木桶或板条箱便是
2 min read
Unity3D :TreeView

Unity3D :TreeView

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 TreeView 本页面的信息假定读者已基本了解 IMGUI(即时模式 GUI)的概念。有关 IMGUI 和自定义 Editor 窗口的信息,请参阅扩展 Editor 和 IMGUI Unity 博客。 TreeView 是一个 IMGUI 控件,用于显示可以展开和折叠的层级数据。使用 TreeView 可为 Editor 窗口创建高度定制化的列表视图和多列表格,并可将其与其他 IMGUI 控件和组件结合使用。 请参阅 Unity Scripting API 文档的 TreeView 页面以了解可用的 TreeView API 函数。 请注意,TreeView 不是树数据模型。可以使用所需的任何树数据结构来构造 TreeView。这可以是
14 min read
Unity3D

Unity3D :自定义编辑器

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 自定义编辑器 为了加快应用程序开发,请为常用组件创建自定义编辑器。本页面展示了如何创建一个简单的脚本以使游戏对象始终看向一个点。 1. 创建一段 C# 脚本并将其命名为“LookAtPoint”。 2. 打开该脚本并将其内容替换为下面的代码。 3. 将脚本附加到场景中的游戏对象。 //C# 示例 (LookAtPoint.cs) using UnityEngine; public class LookAtPoint : MonoBehaviour { public Vector3 lookAtPoint = Vector3.zero; void Update() { transform.LookAt(lookAtPoint); } } 进入运行模式后,脚本所附加到的游戏对象现在会将自身朝向设置为“Look At Point”属性的坐标。编写编辑器脚本时,让某些脚本在编辑模式期间执行通常很有用(此时未运行您的应用程序)。为此,请向类添加
6 min read
Unity3D

Unity3D :属性绘制器

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 属性绘制器 借助属性绘制器,可以通过使用脚本上的特性或通过控制特定 Serializable 类的外观来自定义 __Inspector 窗口__中某些控件的外观。 属性绘制器有两种用途: * 自定义 Serializable 类的每个实例的 GUI。 * 通过自定义的__属性特性__来自定义脚本成员的 GUI。 自定义 Serializable 类的 GUI 如果有自定义的 Serializable 类,可以使用__属性绘制器__来控制该类在 Inspector 中的外观。请参考以下脚本示例中的 Serializable 类 Ingredient(注意:这些不是编辑器脚本。属性特性类应放在常规脚本文件中): C#(示例): using System; using UnityEngine; enum IngredientUnit { Spoon, Cup,
4 min read
Unity3D :编辑器窗口

Unity3D :编辑器窗口

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 编辑器窗口 可以在该应用程序中创建任意数量的自定义窗口。这些窗口的行为与 Inspector、Scene 视图或任何其他内置视图类似。这是为游戏的子系统添加用户界面的好方法。 创建自定义编辑器窗口涉及以下简单步骤: * 创建一个派生自 EditorWindow 的脚本。 * 使用代码触发窗口自行显示。 * 实现工具的 GUI 代码。 派生自 EditorWindow 为了创建编辑器窗口,必须将脚本存储在称为“Editor”的文件夹中。在派生自 EditorWindow 的此脚本内创建一个类。然后在内部 OnGUI 函数中编写 GUI 控件。 using UnityEngine; using UnityEditor; using System.Collections; public class Example : EditorWindow { void OnGUI () { // 此处为实际窗口代码 }
3 min read
Unity3D

Unity3D :GUI Style(IMGUI 系统)

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 GUI Style(IMGUI 系统) GUI Style 是与 UnityGUI 结合使用的自定义属性的集合。单个 GUI Style 定义了单个 UnityGUI __控件__的外观。 如果要将样式添加到多个控件,请使用 GUI Skin 而不是 GUI Style。有关 UnityGUI 的更多信息,请阅读 GUI 脚本指南。 请注意:本页面适用于 IMGUI 系统的一部分;该系统是一个仅限于脚本的 UI 系统。Unity 有一个完整的基于游戏对象的 UI 系统,您可能更希望使用该系统。该系统允许在 Scene 视图中以可见对象的形式设计和编辑用户界面元素。请参阅 UI
5 min read
Unity3D

Unity3D :GUI Skin(IMGUI 系统)

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 GUI Skin(IMGUI 系统) GUISkin 是可应用于 GUI 的 GUIStyle 的集合。每种__控件 (Control)__ 类型都有自己的样式定义。皮肤 (Skin) 的主要目的将样式应用于整个 UI,而不是应用于单独的控件本身。 要创建 GUISkin,请从菜单栏中选择 Assets > Create > GUI Skin。 请注意:本页面适用于 IMGUI 系统的一部分;该系统是一个仅限于脚本的 UI 系统。Unity 有一个完整的基于游戏对象的 UI 系统,您可能更希望使用该系统。该系统允许在 Scene 视图中以可见对象的形式设计和编辑用户界面元素。请参阅 UI 系统手册以了解更多信息。 属性 GUI
6 min read
Unity3D

Unity3D :扩展 IMGUI

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 扩展 IMGUI 可借助多种方法利用和扩展 IMGUI 系统,从而满足您的需求。您可以混合并创建控件,并充分控制 GUI 用户输入的处理方式。 复合控件 GUI 中可能存在两种类型的控件总是一起出现的情况。例如,假设正在创建具有多个水平滑动条 (Horizontal Slider) 的“角色创建 (Character Creation)”屏幕。所有这些滑动条 (Slider) 都需要一个标签 (Label) 来进行标识,让玩家知道自己正在调整什么。在这种情况下,可将每个 GUI.Label() 调用与 GUI.HorizontalSlider() 调用进行搭配,或者可创建一个同时包含 Label 和 Slider 的__复合控件__。 /* Label 和 Slider 复合控件
5 min read
Unity3D

Unity3D :IMGUI 布局模式

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 IMGUI 布局模式 固定布局与自动布局 使用 IMGUI 系统时,可使用两种不同的模式来排列和组织 UI:固定布局模式和自动布局模式。到目前为止,本指南中提供的每个 IMGUI 示例都使用了固定布局。要使用自动布局,应在调用控件函数时写入 GUILayout 而不是 GUI。不必使用一种布局模式来替代另一种布局模式,可在同一 OnGUI() 函数中同时使用这两种模式。 当有预先设计好的界面可供使用时,采用固定布局比较合理。如果预先不知道需要多少元素,或者不想费心进行每个控件的手动定位,则采用自动布局比较合适。例如,如果要基于保存游戏文件创建大量不同的按钮,但无法准确知道要绘制多少按钮,这种情况下采用自动布局可能会更加合理。具体实际上取决于游戏设计以及所需的界面呈现方式。 使用自动布局时有两个主要的不同之处: * 使用 GUILayout 而不是 GUI * 自动布局控件不需要 Rect() 函数 /* 使用自动布局时的两个主要不同之处 */ // JavaScript func
9 min read
Unity3D :自定义
Unity3D

Unity3D :自定义

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 自定义 自定义 IMGUI 控件 虽然 Unity 的 IMGUI 系统主要用于创建开发者工具和调试界面,但仍可以通过多种方式进行自定义并设置样式。在 Unity 的 IMGUI 系统中,可微调控件的外观,为控件添加大量细节。控件外观由 GUIStyle 决定。默认情况下,如果创建控件时未定义 GUIStyle,则会应用 Unity 的默认 GUIStyle。此样式是 Unity 的内部样式,可在已发布的游戏中将此样式用于快速原型设计,或者如果选择不对控件进行样式设置,则会采用此样式。 当有大量不同的 GUIStyle 可供使用时,可在单个 GUISkin 中定义这些样式。GUISkin 只不过是 GUIStyle 的集合。 样式如何改变 GUI 控件的外观
7 min read
Unity3D

Unity3D :控件

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 控件 IMGUI 控件类型 可以创建许多不同的 IMGUI 控件。本部分列出了所有可用的显示控件和交互式控件。此外还有其他影响控件布局的 IMGUI 函数;在本指南的布局部分介绍了这些函数。 Label Label 为非交互式控件。此控件仅用于显示目的。不能单击,也不能以其他方式进行移动。此控件最适合于纯粹显示信息之用。 /* GUI.Label 示例 */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { void OnGUI () { GUI.Label (new Rect (25, 25, 100, 30), "Label"); } } Button Button 是典型的交互式按钮。点击按钮时,无论鼠标按下多久,
11 min read
Unity3D :IMGUI 基础知识

Unity3D :IMGUI 基础知识

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 IMGUI 基础知识 本部分将介绍使用 Unity 的即时模式 GUI 系统 (IMGUI) 来编写__控件__脚本的必要条件。 使用 IMGUI 创建控件 Unity 的 IMGUI 控件使用一个名为 OnGUI() 的特殊函数。只要启用包含脚本,就会在每帧调用 OnGUI() 函数,就像 Update() 函数一样。 IMGUI 控件本身结构非常简单。此结构如以下示例中所示。 /* 示例关卡加载程序 */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { void OnGUI () { // 创建背景框 GUI.Box(new
7 min read
Unity3D :创建屏幕过渡
Unity3D

Unity3D :创建屏幕过渡

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 创建屏幕过渡 在多个 UI 屏幕之间进行过渡的需求相当普遍。在本页面中,我们将探索一种使用动画和状态机来创建和管理这些过渡以便驱动和控制每个屏幕的简单方法。 概述 大体思路是每个屏幕都有一个动画控制器以及两个状态(Open 和 Closed)和一个布尔参数 (Open)。要在屏幕之间过渡,只需关闭当前打开的屏幕并打开所需的屏幕。为了简化这一过程,我们将创建一个小型的 ScreenManager 类,稍后用于跟踪并处理所有已打开的屏幕。触发过渡的按钮只需要让 ScreenManager 打开所需的屏幕。 关于导航的注意事项 如果打算支持通过控制器/键盘对 UI 元素进行导航,必须注意几点。必须避免可选元素超出屏幕,因为这样会让玩家选择屏幕外的元素,为此我们可以停用所有屏幕外层级视图。我们还需要确保在显示新屏幕时将其中的某个元素设置为选中状态,否则玩家将无法导航到新屏幕。我们将在下面的 ScreenManager 类中处理所有这些问题。 设置动画控制器 让我们来看看进行屏幕过渡时所需的
7 min read
Unity3D

Unity3D :通过脚本创建 UI 元素

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 通过脚本创建 UI 元素 如果要创建动态 UI,使 UI 元素根据用户操作或游戏中的其他操作来显示、消失或变化,则可能需要创建基于自定义逻辑来实例化新 UI 元素的脚本。 创建 UI 元素预制件 为了能够轻松地动态实例化 UI 元素,第一步是为希望能够实例化的 UI 元素类型创建预制件。首先设置 UI 元素,使其在场景中具有所需的显示效果,然后将该元素拖动到 Project 视图中以使其成为预制件。 例如,按钮的预制件可以是具有图像组件和按钮组件的游戏对象以及具有文本组件的子游戏对象。根据需求不同,设置可能会有所不同。 您可能想知道为什么我们没有提供 API 方法来创建各种类型的控件(包括视觉效果和所有内容)。原因在于,比如对于按钮而言,有无数种设置方式。该控件使用图像、文本还是两者兼而有之?甚至可能使用多个图像?文本字体、颜色、字体大小和对齐方式是什么?图像应该使用哪个精灵或哪些精灵?
3 min read
Unity3D

Unity3D :创建 World Space UI

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 创建 World Space UI 使用 UI 系统可以在世界中轻松创建位于场景内其他 2D 或 3D 对象之间的 UI。 如果场景中还没有 UI 元素(如图像),首先使用 GameObject > UI > Image 创建一个 UI 元素。此过程还将创建画布。 将画布设置为 World Space 选择画布并将 Render Mode 更改为 World Space。 现在,画布已经定位在世界中,并可让所有摄像机看到(如果摄像机面向该画布),但与场景中的其他对象相比,画布可能过于巨大。我们稍后将讨论这一点。 决定分辨率 首先,需要决定画布的分辨率应该是多少。如果是图像,图像的像素分辨率应该是多少?最开始设置为
2 min read
Unity3D

Unity3D :使 UI 元素适应其内容的大小

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 使 UI 元素适应其内容的大小 通常,在使用矩形变换定位 UI 元素时,应手动指定其位置和大小(可选择性地包括使用父矩形变换进行拉伸的行为)。 但是,有时可能希望自动调整矩形的大小来适应 UI 元素的内容。为此,可添加名为内容大小适配器 (Content Size Fitter) 的组件。 适应文本大小 为了使带有文本组件的矩形变换适应文本内容,请将内容大小适配器组件添加到具有文本组件的同一游戏对象。然后将 Horizontal Fit 和 Vertical Fit 下拉选单设置为 Preferred 设置。 工作原理 此处的工作原理是文本组件充当布局元素,可提供有关最小大小和偏好大小的大小信息。在手动布局中,不会使用此信息。内容大小适配器是一种布局控制器,可监听布局元素提供的布局信息,并根据此信息控制矩形变换的大小。 注意轴心 当 UI 元素自动调整大小来适应其内容时,应特别注意矩形变换的轴心。当元素调整大小时,轴心将保持在原位,
5 min read
NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号