按钮状态
我从使用鼠标时的状态描述开始这个答案,因为这是与鼠标交互的更复杂的方式Button
.
当你拥有Button
场景中的 s,除非您禁用它们,否则它们将处于正常状态。
当您将指针移到Button
,它从正常变为悬停。如果将指针移出,它应该从悬停状态返回到正常状态。
如果您单击Button
它从悬停变为按下。现在按钮获得焦点了。
当您松开顶部的单击时Button
,它从按下状态变为悬停状态(这可能会很快看到按下状态)。然后当您将指针移出Button
,它从悬停到焦点(而不是正常)。
或者,您可以将指针移出Button
而是释放单击,这也会导致焦点状态。
当你与另一个人互动时Control
,它从焦点回到正常。
使用鼠标的状态图
这是状态图Button
当您使用鼠标时:
所以我们看到Button
从正常到正常可以走两条5路径:
-
正常 -> 悬停 -> 正常
在这里,您将鼠标指针移到按钮上,然后将其移出。
-
正常 -> 悬停 -> 按下(悬停 + 焦点) -> 悬停(焦点) -> 焦点 -> 正常
在这里,您将鼠标指针移到Button
,按下并释放单击,然后将鼠标指针移出并单击其他一些Control
.
使用触摸的状态图
当您使用触摸输入时,没有悬停状态,因此图表简化为:
在这里,我们有一条从正常到正常的路径:正常 -> 按下 + 焦点 -> 焦点 -> 正常。在这里您点击Button
,然后点击其他一些Control
.
使用键盘输入时的图形状态
使用键盘时与使用触摸类似,没有悬停。然而,我们独立于 Pressed 来控制 Focus,这会导致:
这里我们有从普通到普通的三种路径:
-
正常 -> 焦点 -> 正常。
在这里您可以使用 Tab 键进入Button
,然后按 Tab 键退出。
-
正常 -> 对焦 -> 按下 + 对焦 -> 对焦 -> 正常。
在这里您可以使用 Tab 键进入Button
,按下并释放它,然后按 Tab 将其退出。
Note: 您可以尝试在不释放的情况下退出Button
,这导致Button
直接从按下(焦点)到正常(类似于将鼠标从Button
按住单击的同时)。但是,我决定不将其视为单独的过渡或路径。
按钮颜色
好吧,现在我们知道了州,我们在每个州看到的颜色是什么?
Godot 3:
- Normal:
custom_colors/font_color
.
- Hover:
custom_colors/font_color_hover
.
- 按下:
custom_colors/font_color_pressed
.
- Focus:
custom_colors/font_color_focus
.
- 禁用:
custom_colors/font_color_disabled
.
Note:当您将 Hover 与 Focus 结合使用时,您仍然可以获得custom_colors/font_color_hover
。当您将 Pressed 与 Hover 或 Focus 结合使用时,您仍然会得到custom_colors/font_color_pressed
.
Godot 4:
- Normal:
theme_override_colors/font_color
.
- Hover:
theme_override_colors/font_hover_color
.
- 按下:
theme_override_colors/font_pressed_color
.
- Focus:
theme_override_colors/font_focus_color
.
- 禁用:
theme_override_colors/font_disabled_color
.
Note:与 Godot 3 中发生的情况类似,当你将 Hover 与 Focus 结合使用时,你仍然会得到theme_override_colors/font_hover_color
。当您将 Pressed 与 Hover 或 Focus 结合使用时,您仍然会得到theme_override_colors/font_pressed_color
。事实上,我没能得到theme_override_colors/font_hover_pressed_color
.
你的问题
当我单击按钮 (...) 时,按钮的字体颜色变为白色
那不是正常颜色。虽然你有Button
按下时,您正在查看按下的颜色。释放后,如果鼠标指针位于Button
您正在查看悬停颜色。否则,这是焦点颜色。
当我单击另一个按钮时,原始按钮变为红色
那是正常颜色。
没有按钮预制设置似乎有什么不同。
预制件不是一个东西。这是戈多。
我能做些什么让字体的颜色立即显示为正确的颜色吗?
这不是“立即”的问题,而是你想把颜色改变成什么状态。我怀疑您想将“焦点”、“悬停”和“按下”的颜色设置为与“正常”的颜色相同。请注意,了解状态对于用户体验非常重要。哪个Control
拥有焦点对于仅键盘输入尤其重要。