如何防止标签和按钮缩放?
How do you prevent labels and buttons scaling?
我正在测试一个 Godot 应用程序,顶部有一个文本标题,底部有按钮。现在我在中间有一个垫片来保持顶部的标题和底部的按钮。
如果我将“项目设置”->“显示”->“拉伸”设置为禁用,那么我可以设置一个适合我的笔记本电脑的字体和按钮大小,并且标题和按钮的字体大小不会缩小或变大window 已调整。
如何保证and/or测试应用程序导出到iOS和Android时大小合适?是否有某种指南可以帮助为所有设备选择合适的(不可缩放的)按钮尺寸?
Control
是如何定位的
在 Godot 中有三种定位 Control
的方法:
放在一个Container
。在这种情况下,Container
将控制 child Control
的位置和大小,同时考虑“大小标志”。
另见 Using Containers, and Containers。
通过锚点 (anchor_*
) 和边距 (margin_*
)。它们确定 Control
的边缘位置。锚点是因子,边距是偏移量。
例如,Control
的最左边部分将位于 anchor_left * parent_width + margin_left
,相对于 parent Control
。
当您选择 Control
时,您将在工具栏中出现的“布局”菜单中找到预设。
另见 Size and anchors。
通过 rect_position
和 rect_size
。这些是相对于左上角的 parent Control
.
最终,其他定位 Control
的方法正在改变这些。即使您通过其他方式定位 Control
,您也可以更改这些……这不是预期的,但受支持(因为将动画添加到 UI 等)。
不管你用哪个,Godot都会尊重rect_min_size
。是的,还有 rect_rotation
和 rect_scale
对上述解释提出了质疑,但它们的工作方式与您预期的一样。
是的,它不是更容易使用的系统。因此,设计器正在针对 Godot 4 进行改进(在撰写本文时目前在 Alpha 3 上)。
回答标题的问题:如果你的拉伸模式设置为disabled
,并且你的UI锚定在左上角(是默认值),您将调整 window 的大小,而 UI 不会缩放或适应该更改。 我不认为你不想 UI 适应。
用容器制作顶栏和底栏
您可以使用 VBoxContainer
,因为我们将三个条垂直堆叠在一起。是的,第二个是 spacer.
首先,您希望 VBoxContainer
占据整个屏幕。所以将其设置为布局预设“Full Rect”。 所以,是的,我们通过锚点和边距放置 Container
。
其次,我们希望 spacer 尽可能多地使用 space。为了存档,我们在 spacer 的 size_flags_vertical
上设置了“展开”标志。这就是 Size Flags 的用途。
当然,您在 Container
中放置的内容可能会或可能不会更多 Container
s。
制作带有锚点和边距的顶栏和底栏
为顶部栏提供“Top Wide”预设。它将设置边距和锚点,使其保持在顶部,占据全宽,并占据最小高度。
并为底栏设置“底部宽”预设。它将设置边距和锚点,使其保持在底部,占据全宽,并占据最小高度。
你不需要 spacer.
而且,顺便提醒一下,锚点是相对于 parent 的边距。所以你可以嵌套这种方法。是的,不是容器的 Control
s 也可以有 children Control
s
关于拉伸模式
如您所知,您可以选择:
viewport
: 所有的尺寸都将以原始分辨率计算,然后将得到的尺寸缩放到设备的分辨率。
2D
:还将使用原始分辨率计算所有尺寸,但不是缩放结果尺寸,而是以该尺寸渲染并缩放图像。
disabled
:它将根据设备的实际分辨率计算所有尺寸。不会发生缩放。
由于 viewport
和 2D
,UI 的大小将不会根据设备的实际分辨率计算。这使得我描述的使 UI 适应的方法效率较低(不太有用或不太必要,具体取决于您如何看待它)。因此,如果我们想有效地使用这些方法,我们需要将拉伸模式设置为 disabled
.
当然还有纵横比设置
另见 Multiple resolutions and Support multiple form factors and screen sizes。
小分辨率设计
您可以在编辑器上测试 UI 如何适应分辨率,方法是调整 window 的大小,或者在项目设置中设置测试宽度和测试高度。 当然,您也可以在实际的智能手机上进行测试。例如,在开发手机游戏时,我经常在 Android 中从 Godot 编辑器启动游戏。
回到拉伸模式,这就是文本发生的情况:
disabled
:文本保持相同大小。这意味着UI 对于文本来说可能太小了。
viewport
:文字刻度。这意味着文本可能会变得太小而难以辨认。
2d
: 文本也会缩放……除了因为它是图像缩放,它会变得模糊,甚至更难阅读。
如果只考虑文字,没有好的选择。现在,要么为特定的目标分辨率设计UI……要么制作一个可以适应的。对于能够适应的人,我相信 disabled
是最好的拉伸模式,正如我在上面所说的那样。
当然你可以编写脚本
如果你需要在分辨率变化时运行一些代码,你可以连接到根Viewport
的"size_changed"
信号。如果您需要确定设备是横向模式还是纵向模式,您 OS.screen_orientation
,如果确实需要,您可以创建自定义 Container
.
我正在测试一个 Godot 应用程序,顶部有一个文本标题,底部有按钮。现在我在中间有一个垫片来保持顶部的标题和底部的按钮。
如果我将“项目设置”->“显示”->“拉伸”设置为禁用,那么我可以设置一个适合我的笔记本电脑的字体和按钮大小,并且标题和按钮的字体大小不会缩小或变大window 已调整。
如何保证and/or测试应用程序导出到iOS和Android时大小合适?是否有某种指南可以帮助为所有设备选择合适的(不可缩放的)按钮尺寸?
Control
是如何定位的
在 Godot 中有三种定位 Control
的方法:
放在一个
Container
。在这种情况下,Container
将控制 childControl
的位置和大小,同时考虑“大小标志”。另见 Using Containers, and Containers。
通过锚点 (
anchor_*
) 和边距 (margin_*
)。它们确定Control
的边缘位置。锚点是因子,边距是偏移量。例如,
Control
的最左边部分将位于anchor_left * parent_width + margin_left
,相对于 parentControl
。当您选择
Control
时,您将在工具栏中出现的“布局”菜单中找到预设。另见 Size and anchors。
通过
rect_position
和rect_size
。这些是相对于左上角的 parentControl
.最终,其他定位
Control
的方法正在改变这些。即使您通过其他方式定位Control
,您也可以更改这些……这不是预期的,但受支持(因为将动画添加到 UI 等)。
不管你用哪个,Godot都会尊重rect_min_size
。是的,还有 rect_rotation
和 rect_scale
对上述解释提出了质疑,但它们的工作方式与您预期的一样。
是的,它不是更容易使用的系统。因此,设计器正在针对 Godot 4 进行改进(在撰写本文时目前在 Alpha 3 上)。
回答标题的问题:如果你的拉伸模式设置为disabled
,并且你的UI锚定在左上角(是默认值),您将调整 window 的大小,而 UI 不会缩放或适应该更改。 我不认为你不想 UI 适应。
用容器制作顶栏和底栏
您可以使用 VBoxContainer
,因为我们将三个条垂直堆叠在一起。是的,第二个是 spacer.
首先,您希望 VBoxContainer
占据整个屏幕。所以将其设置为布局预设“Full Rect”。 所以,是的,我们通过锚点和边距放置 Container
。
其次,我们希望 spacer 尽可能多地使用 space。为了存档,我们在 spacer 的 size_flags_vertical
上设置了“展开”标志。这就是 Size Flags 的用途。
当然,您在 Container
中放置的内容可能会或可能不会更多 Container
s。
制作带有锚点和边距的顶栏和底栏
为顶部栏提供“Top Wide”预设。它将设置边距和锚点,使其保持在顶部,占据全宽,并占据最小高度。
并为底栏设置“底部宽”预设。它将设置边距和锚点,使其保持在底部,占据全宽,并占据最小高度。
你不需要 spacer.
而且,顺便提醒一下,锚点是相对于 parent 的边距。所以你可以嵌套这种方法。是的,不是容器的 Control
s 也可以有 children Control
s
关于拉伸模式
如您所知,您可以选择:
viewport
: 所有的尺寸都将以原始分辨率计算,然后将得到的尺寸缩放到设备的分辨率。2D
:还将使用原始分辨率计算所有尺寸,但不是缩放结果尺寸,而是以该尺寸渲染并缩放图像。disabled
:它将根据设备的实际分辨率计算所有尺寸。不会发生缩放。
由于 viewport
和 2D
,UI 的大小将不会根据设备的实际分辨率计算。这使得我描述的使 UI 适应的方法效率较低(不太有用或不太必要,具体取决于您如何看待它)。因此,如果我们想有效地使用这些方法,我们需要将拉伸模式设置为 disabled
.
当然还有纵横比设置
另见 Multiple resolutions and Support multiple form factors and screen sizes。
小分辨率设计
您可以在编辑器上测试 UI 如何适应分辨率,方法是调整 window 的大小,或者在项目设置中设置测试宽度和测试高度。 当然,您也可以在实际的智能手机上进行测试。例如,在开发手机游戏时,我经常在 Android 中从 Godot 编辑器启动游戏。
回到拉伸模式,这就是文本发生的情况:
disabled
:文本保持相同大小。这意味着UI 对于文本来说可能太小了。viewport
:文字刻度。这意味着文本可能会变得太小而难以辨认。2d
: 文本也会缩放……除了因为它是图像缩放,它会变得模糊,甚至更难阅读。
如果只考虑文字,没有好的选择。现在,要么为特定的目标分辨率设计UI……要么制作一个可以适应的。对于能够适应的人,我相信 disabled
是最好的拉伸模式,正如我在上面所说的那样。
当然你可以编写脚本
如果你需要在分辨率变化时运行一些代码,你可以连接到根Viewport
的"size_changed"
信号。如果您需要确定设备是横向模式还是纵向模式,您 OS.screen_orientation
,如果确实需要,您可以创建自定义 Container
.