c# - 如何在 Godot 的节点内将标签居中?

标签 c# godot

我试图在 Godot 的自定义绘图节点内将标签居中。标签附加到节点。父节点是一个六边形,(0,0)位置在六边形的中心(即节点中有负坐标)。当我添加标签时,它似乎以六边形的中心作为其左上角。

Imgur

但是,我希望标签的中心位于六边形的中心。这意味着,标签的某些部分必须有负坐标,但我找不到任何解决方案来使标签以正确的方式居中。 Godot 上的标签没有大小,所以我无法手动将其居中。

标签代码:

var label = new Label();
tile.AddChild(label);
label.SetText("1");
label.SetScale(new Vector2(1.5f,1.5f));
label.SetAlign(Godot.Label.AlignEnum.Center);

最佳答案

我终于找到了答案。如果 HexTile.Radio 是六边形的半径,则居中标签包括更改边距和矩形位置:

var label = new Label();
tile.AddChild(label);
label.SetText("1");

label.SetAlign(Godot.Label.AlignEnum.Center);
label.SetValign(Godot.Label.VAlign.Center);
label.SetMargin(Margin.Left,-HexTile.Radio);
label.SetMargin(Margin.Top,-HexTile.Radio);
label.SetMargin(Margin.Right,HexTile.Radio);
label.SetMargin(Margin.Bottom,HexTile.Radio);
label.RectPosition = new Vector2(-HexTile.Radio,-HexTile.Radio);

关于c# - 如何在 Godot 的节点内将标签居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49395631/

相关文章:

godot - 通过 GDScript 创建动画

godot - 在 Area2D 中覆盖 KinematicBody2D 运动?

collision-detection - 如何检测 Godot 中的碰撞?

c# - Csharp 组件,它为 2 个字符串生成带有差异突出显示的片段

c# - Microsoft Message Queue - 优先级标志或单独的队列?

c# datagridview 和 mysql

c# - Godot 发出另一个场景中定义的信号

game-development - Godot 信号是否充当事件处理程序?

c# - C#编译器是否优化空语句

c# - 为什么我的 Sprite 不绘制? (新华社)