我试图将标签置于Godot的自定义绘图节点中。标签附加到节点。父节点是六边形,其(0,0)位置在六边形的中心(这意味着在节点中存在负坐标)。当我添加标签时,似乎将六边形的中心作为其左上角。
但是,我希望标签的中心位于六边形的中心。这意味着,标签的某些部分必须具有负坐标,但我无法找到任何解决方案以正确的方式使标签居中。标签在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);
答案 0 :(得分:1)
我终于找到了答案。如果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);
答案 1 :(得分:1)
在将align和valign设置为居中之后,还可以将rect_position
设置为rect_size
的一半(都是所有Control节点的成员,例如Label)。在GDScript中,它看起来像这样:
func _ready():
var rect = $Label.rect_size
var pos = -rect/2
$Label.rect_position = pos
确保将“标签”节点的锚点设置为0(或在“布局”按钮中选择“左上角”)。标签内居中文本的位置受锚,边距,位置和大小的影响。
您可以在此处了解更多信息:Size and anchors