当前位置: 首页 >  在线学习 >  Godot中的锚点

Godot中的锚点

导读:关于锚点的用处,Godot的官方文档是如此叙述的。.如果一个游戏总是用同一分辨率在同样的设备上运行, 摆放控件将是一个简单的事, 只要逐个设置它们的位置属性和大小属性即可. 不幸的是,.能像这样处理的情况很少..在游戏开发中,处理不同分辨率和纵横比的屏幕可以是一项挑战。但幸运的是

关于锚点的用处,Godot的官方文档是如此叙述的。

如果一个游戏总是用同一分辨率在同样的设备上运行, 摆放控件将是一个简单的事, 只要逐个设置它们的位置属性和大小属性即可. 不幸的是, 能像这样处理的情况很少.

在游戏开发中,处理不同分辨率和纵横比的屏幕可以是一项挑战。但幸运的是,Godot引擎提供了一种强大的工具来解决这个问题 - 锚点和边距。

锚点的概念

想象一下,你的游戏需要在各种设备上运行,从电视到手机,每个设备都有不同的分辨率。这时,将控件逐个设置位置和大小属性将变得非常繁琐。这就是锚点的用武之地。

每个控件都有四个边距:左、右、上和下。默认情况下,它们表示相对于父控件的左上角或视口的像素距离。但是,通过调整水平和/或垂直锚点,你可以改变这些边距的行为。

在没有缩放的情况下,锚点的位置一般是[0,1],表示在父控件中0%-100%的位置。(当然,你也可以设置成2来达到200%的效果)

简单来说,锚点就是快速将控件定位到屏幕相对位置(0%~100%)的工具。

控件的位置随屏幕变化

当你将水平(左,右)和/或垂直(上,下)锚点设置为1时,边距值会相对于父控件或视口的右下角。这意味着,当屏幕分辨率改变时,控件会相应地调整位置。

例如,你可以将一个按钮设置为底部锚点,这样它将始终保持在屏幕底部,即使屏幕大小变化。

控件居中对齐

要将控件居中对齐到其父控件中,只需将锚点的值设置为0.5,并且将边距设置为相关尺寸的一半。

以下是一个示例代码,将一个纹理矩形居中到其父节点:

var rect = TextureRect.new()
rect.texture = load("res://icon.png")
rect.anchor_left = 0.5
rect.anchor_right = 0.5
rect.anchor_top = 0.5
rect.anchor_bottom = 0.5
var texture_size = rect.texture.get_size()
rect.margin_left = -texture_size.x / 2
rect.margin_right = -texture_size.x / 2
rect.margin_top = -texture_size.y / 2
rect.margin_bottom = -texture_size.y / 2
add_child(rect)

通过将每个锚定值设置为0.5,我们将边缘的参考点移动到父锚点的中心。然后,通过设置负边距,我们确保控件获得其自然大小并保持居中对齐。

快速设置锚点

使用编辑器右上角的按钮可以快速设置锚点

内容
  • 一文揭秘DDD到底解决了什么问题
    一文揭秘DDD到底解决了什么问题
    2023-12-01
    DDD作为架构设计思想帮助微服务控制规模复杂度,那它是怎么做到的呢?.一、架构设计是为了解决系统复杂度.谈到架构,相信每
  • Unity实现3D物体遮挡血条
    Unity实现3D物体遮挡血条
    2023-12-08
    Unity 实现3D物体遮挡血条.######.前言:在游戏开发中,我们经常会遇到UI和3D物体的层级遮挡问题,最常见的
  • 一个公式让你35岁以后能越过越好!大神修炼心法
    一个公式让你35岁以后能越过越好
    2023-12-08
    前言.Cocos 的老铁,如果你这几天没有被麒麟子给卷到?那说明你还没有真正进入 Cocos 圈子里来。为什么这么说呢?
  • C++学习-static
    C++学习-static
    2023-12-02
    全局变量使用:.作用是限定全局变量的作用范围,只能在当前文件使用,类似给它加了个private属性。.其他文件即使使用e
  • 【Oculus Interaction SDK】(五)设置不同的抓握手势
    【Oculus Interact
    2023-12-10
    前言.前段时间 Oculus 的 SDK.频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现
  • 吃透单调栈(2)——解两道Hard题:接雨水、柱状图中最大的矩形问题
    吃透单调栈(2)——解两道Har
    2023-12-04
    怎么想到要用单调栈的?.这类题目的数据通常是一维数组,要寻找任一个元素的右边或者左边第一个 比自己大 或者小 的元素的位