Godot4.3类星露谷游戏开发之【时钟UI】

Godot 常用UI+布局容器简单介绍 布局容器是非常重要的,我们一般在布局容器进行对用户的交互UI布局是非常通用的,无论是2D还是3D。但是Godot 的3D还处于开发中的状态,2D已经够用了,但是3D 目前还是不如Unity的。 阅读详情

千里之行,始于足下

零、 笔记

本文将制作这个系列里的第一个UI(User Interface,用户界面)——时钟UI,如下图所示;

在这里插入图片描述

一、UI界面

时钟面板 时钟面板 时钟面板
第一步,在 res://场景/UI/ 路径 下,创建 时钟UI.tscn 场景;

在这里插入图片描述

节点树如下:

  • 时钟UI(Control)
    • 时钟面板(PanelContainer)
      • 昼夜图标1(Sprite2D)
      • 昼夜图标2(Sprite2D)
    • 当前时间(Label)

第二步,选中 时钟面板 节点,在检查器中 新建Theme 并另存为 游戏UI主题.tres 到路径 res://资源/主题/ 下;

在这里插入图片描述
在这里插入图片描述
第三步,在展开的主题底栏中点击【+】,添加项目类型 ClockUI ;

在这里插入图片描述
在这里插入图片描述
第四步,添加基础类型 PanelContainer ;

在这里插入图片描述
第五步,在panel下新建 StyleBoxTexture 并选中,随后在检查器中新建 AtlasTexture ;

在这里插入图片描述
在这里插入图片描述
第六步,从文末 UI包 导入 Weather_UI_Free.png,并 编辑区域 ;

在这里插入图片描述
在这里插入图片描述
第七步,观察到裁剪后图片尺寸为 65x54像素;

在这里插入图片描述
第八步,选中时钟面板节点,在检查器中更改 size 为 65x54 ,更改 Type Variation 为 ClockUI ;

在这里插入图片描述
在这里插入图片描述
效果如下;

在这里插入图片描述


昼夜图标 1 (左) 昼夜图标1(左) 昼夜图标1(左)
第一步,选中昼夜图标(Sprite2D)节点,直接将 UI包 中的 Weather_Icons_smal_freel.png拖入检查器中的 Texture ;

在这里插入图片描述
第二步,点开检查器中的 Animation ,并设置 Hframes 为 2,Vframes 为 3 ;

在这里插入图片描述
第三步,手动将图标拖入时钟UI中,如下图;

在这里插入图片描述


昼夜图标 2 (右) 昼夜图标2(右) 昼夜图标2(右)
第一步,选中昼夜图标(Sprite2D)节点,在检查器中新建 AtlasTexture ;

在这里插入图片描述

第二步,从文末 UI包 中导入 Weather_UI_Free.png,并 编辑区域 ;

在这里插入图片描述
在这里插入图片描述
第三步,手动将图标拖入时钟UI中,如下图;

在这里插入图片描述


当前时间 当前时间 当前时间

第一步,选中 当前时间 节点,加载 游戏UI主题.tres 主题;

在这里插入图片描述
第二步,在展开的主题底栏中,点击【+】按钮,添加项目类型 CurrentTime ;
在这里插入图片描述
在这里插入图片描述
第三步,设置基础类型为 Label ,字体大小 font_size 为 16 ,字体为 UI包 中的 pixelFont-7-8x14-sproutLands.ttf ;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第四步,调整 当前时间 节点至合适的位置;

在这里插入图片描述
第五步,以 游戏UI(CanvasLayer) 为根节点,新建场景 游戏ui.tscn ,并保存在 res://场景/UI/ 路径下;

在这里插入图片描述
第六步,添加 MarginContainer 为子节点,并实例化 时钟UI 为其子节点;

在这里插入图片描述
节点树如下:

  • 游戏UI
    • MarginContainer
      • 时钟UI

第七步,选中MarginContainer节点,在检查器中调整参数如下;
锚点预设 右上 ,尺寸大小为 70x59 ——时钟UI长宽各自增加 5;

在这里插入图片描述
上外边距(Margin Top)、右外边距(Margin Right)设置为 5 ;

在这里插入图片描述
此时运行游戏UI场景,时钟UI应该与 右边框 和 上边框 各自有5个像素的距离;

在这里插入图片描述

二、脚本

第一步,选中 时钟UI 节点,附加脚本;

extends Control
## 时钟UI面板,00:00 -> 23:59 循环更替
## 6点 太阳
## 18点 月亮

@onready var 当前时间: Label = $"当前时间"
@onready var 昼夜图标1: Sprite2D = $"时钟面板/昼夜图标1"


func _ready() -> void:
	TimeManager.游戏格式化时间更新.connect(时间更新)
	
	
func 时间更新(时间: Array[int]) ->void:
	当前时间.text = "%02d:%02d" % [时间[1], 时间[2]]
	
	# 更新昼夜图标
	if 时间[1] == 18:
		昼夜图标1.frame = 2  # 夜晚 
	elif 时间[1] == 6:
		昼夜图标1.frame = 0  # 白天

第二步,创建 时间管理器 单例,前文 Godot4.3类星露谷游戏开发之【昼夜循环】中已经实现;

extends Node
## 时间管理 

signal 游戏总时间更新(秒: float)
signal 游戏格式化时间更新(格式化时间: Array[int])

const 每日秒数: int = 24 * 60 * 60
const 每时秒数: int = 60 * 60
const 每分秒数: int = 60
const 时间单元: Array[Array] = [
	[每日秒数, "天"],
	[每时秒数, "小时"],
	[每分秒数, "分钟"],
	[1, "秒"],
]

# 初始游戏时间,第1天6:00:00
var 初始游戏天数: int = 1
var 初始游戏小时数: int = 6
var 初始游戏分钟数: int = 0
var 初始游戏秒数: int = 0

# 累计游戏时间
var 累计游戏时间: float = 0.0

# 其他设置
var 时间流速: float = 7000.0  # 相当于正常时间流速的5000倍
var 时间暂停: bool = false


# 初始化累计游戏时间
func _ready() -> void:
	累计游戏时间 = 计算初始总秒数()


# 产生时间
func _process(delta: float) -> void:
	if 时间暂停:
		return
	
	累计游戏时间 += delta * 时间流速
	#print_debug("累计游戏时间:", 累计游戏时间)
	
	# 发送时间信号
	游戏总时间更新.emit(累计游戏时间)

	# 转换格式并发送时间信号
	var 格式化时间: Array[int] = 转换时间格式(int(累计游戏时间))
	游戏格式化时间更新.emit(格式化时间)


# 计算初始时间总秒数
func 计算初始总秒数() ->float:
	return (
		初始游戏天数 * 每日秒数 +
		初始游戏小时数 * 每时秒数 +
		初始游戏分钟数 * 每分秒数 +
		初始游戏秒数
	)


# 格式转换:总秒数 -> 日/时/分/秒
func 转换时间格式(总秒数: int) ->Array[int]:
	# 异常处理
	if 总秒数 < 0:
		push_error("无效的时间参数")
		return [0, 0, 0, 0]
	
	# 格式转换
	var 剩余秒数 = int(总秒数)
	var 结果:Array[int] = []
	for 单元 in 时间单元:
		var 值 = 剩余秒数 / 单元[0]
		剩余秒数 %= 单元[0]
		结果.append(值)
	print_debug(结果)	
	
	return 结果

三、搭建测试环境

在前文 Godot4.3类星露谷游戏开发之【昼夜循环】创建的 测试_昼夜循环 场景中 ,实例化 游戏UI 场景为节点 ;

在这里插入图片描述

四、测试

运行 测试_昼夜循环 场景,测试时钟UI走动效果;

请添加图片描述
测试完成!

五、免费开源资产包

精灵包链接:点击此处
UI包链接:点击此处

  1. 进入链接后点击下图按钮;
    下载

  2. 然后点击【No thanks,just take me to the downloads】(不了谢谢,只想下载);
    No thanks,just take me to the downloads

  3. 最后点击下图按钮完成下载(注意导入前需解压缩)。
    下载

使用Godot 4从零复刻《星露谷物语》核心玩法:实战开发指南 在游戏开发领域,2D像素风模拟经营游戏因其独特的艺术风格和深度的玩法循环而备受青睐。这类游戏的核心通常围绕资源管理、地图交互和成长系统构建,其实现依赖于高效的2D渲染、精确的碰撞检测以及复杂的状态与数据管理。Godot引擎,特别是其4.x版本,凭借其卓越的2D工作流、节点化场景系统和易上手的GDScript脚本语言,成为实现这类游戏逻辑的理想选择。通过将游戏世界分解为可交互的瓦片地图(TileMap),并利用其数据层(Data Layers)管理地形属性,开发者可以高效地实现耕种、采矿等核心交互。同时,结合 阅读详情

相关推荐

Godot 4 实战:从零构建像素风农场模拟游戏核心系统

2D游戏开发中,TileMap系统是构建网格化世界的核心技术,它通过图块(Tile)与自定义数据层(Custom Data Layers)高效管理地形与交互逻辑。其原理是将游戏世界划分为网格,每个图块携带属性数据(如是否可通行、可耕种),从而实现数据驱动的游戏逻辑。这一技术价值在于极大提升了地图编辑效率与游戏逻辑的灵活性,尤其适用于农场模拟、策略、RPG等需要复杂地图交互的场景。结合Godot 4的信号(Signal)与单例(Singleton)机制,可以优雅地实现全局游戏时间系统与模块化交互。本文以复刻《

weixin_30808693的博客 436

Godot中所有UI节点介绍

UI节点是游戏界面中常用的节点,但是很多UI节点可能用的次数很少,所以我写一下,做个基础介绍而已,主要是为了提醒自己UI界面具有多种制作方法。理论上只使用ui界面也可以制作一个完整的文字冒险游戏面板,节点 输入元素,滚动条,滑块,菜单栏,标签栏。

watch361的博客 3270

第一章-介绍

介绍一般建议什么是游戏引擎?什么是Godot?下载Godot其他安装方法Godot UI概述Project Manager选择文件名编辑器窗口关于节点和场景Godot中的脚本关于GDScript总结 无论你是想要从事的职业还是休闲爱好,游戏开发都是一项有趣而有意义的工作。现在是开始游戏开发的最佳时机。现代化的编程语言和工具使构建高质量的游戏并将其发布到全世界变得比以往任何时候都容易。如果你正在阅读本书,那么你已经踏上了制作梦想中的游戏的道路。 本书是对Godot游戏引擎及其2018年初发布的新3.0版本的介

游戏开发 2111

Godot 做一个简单的Ui管理器 (C#)

【代码】Godot 做一个简单的Ui管理器 (C#)

qq_39465123的博客 1141

Godot引擎开发:UI和用户交互_常用UI插件与扩展

ControlDock是一个强大的UI管理插件,它可以帮助开发者更方便地在场景中创建和管理UI元素。ControlDock提供了多种工具和面板,可以用于快速创建和编辑UI布局,包括拖放功能、自动布局调整等。Theme Designer是一个用于设计和管理Godot引擎主题的插件。它可以帮助开发者更方便地创建自定义的UI主题,包括字体、颜色、样式等。Theme Designer提供了可视化的界面,可以实时预览主题效果,大大提高了主题设计的效率。打开Theme Designer面板。

chenlz2007的博客 1590

Godot引擎开发:UI和用户交互_响应式UI设计

Anchor用于定义节点的锚点,即节点在父容器中的相对位置。通过设置锚点,可以实现节点在不同分辨率下的自动调整。在某些情况下,内置的容器节点和布局选项可能无法满足需求。这时可以通过自定义脚本来实现更复杂的布局逻辑。创建一个新的场景。添加一个Panel节点。在Panel节点下添加多个Button节点。编写自定义脚本,实现按钮的动态布局。# 创建一个新的场景# 自定义布局脚本button1.text = "按钮1"button2.text = "按钮2"button3.text = "按钮3"

chenlz2007的博客 1177

Godot4.3类星露谷游戏开发之【简易库存】(UI部分)

《Godot4.3类星露谷游戏开发教程》系列新章发布!本文将手把手教你创建一个美观实用的库存UI系统,包含库存面板设计、物品槽布局、物品纹理显示与数量管理。通过详细的图文步骤,你将学习使用AtlasTexture、Theme资源、NinePatchRect等组件搭建UI,并解决布局中的常见问题。文末提供免费开源资产包下载链接。从零开始,轻松打造专属库存面板,让你的游戏体验更上一层楼!立即阅读,开启创作之旅吧!

ForBigData的博客 1447

Godot(5):Godot游戏界面与UI设计

在Godot中,UI设计主要依赖于Control节点,这是一个基类,所有UI控件都继承自它。Label:用于显示文本。Button:用于创建可点击的按钮。:用于显示图像。:用于水平或垂直排列控件。Popup:用于创建弹出窗口。LineEdit:用于输入文本。Slider:用于创建滑动条。Godot允许你创建自定义控件,以满足特定需求。同时,你可以通过修改样式来改变控件的外观。创建一个自定义Control子类,添加一个Label和一个Buttonvar labelvar button。

kkchenjj的博客 1924

Godot 4.2 2D昼夜光影系统实现:从原理到像素风游戏实践

在2D游戏开发中,动态光影与昼夜循环系统是营造沉浸感的核心技术。其原理基于对场景全局光照与局部光源的模拟,通过时间驱动参数,平滑插值环境色调与光照属性。这项技术的价值在于,它能以较低的性能开销,显著提升游戏的视觉表现力与情感张力,广泛应用于独立游戏、像素风RPG及模拟经营类项目中。Godot引擎的2D渲染管线为此提供了强大支持,特别是CanvasModulate全局调色与Light2D节点,结合法线贴图技术,能在纯2D环境下实现细腻的立体光影。本文以复刻《星露谷物语》的氛围感为目标,深入解析了时间管理器、信

weixin_30814329的博客 402

Godot引擎开发:UI和用户交互_用户交互设计原则

良好的用户交互设计是提高游戏体验的关键。在Godot引擎中,可以通过使用Container节点实现响应式布局,通过设置Control节点的矩形属性实现固定布局,通过多种方式响应玩家输入,以及通过视觉、声音和震动反馈提供必要的信息来优化用户交互。此外,减少输入延迟、提高UI的可访问性和性能,以及适应不同的输入设备也是不可或缺的设计原则。通过这些原则和代码示例,开发者可以创建出更加用户友好的游戏界面,从而提升玩家的整体游戏体验。

chenlz2007的博客 865

Godot引擎开发:Godot基础入门_UI与控件

Godot引擎提供了强大的样式系统,使得开发者可以自定义控件的外观。可以通过Theme资源来设置控件的样式,包括字体、颜色、图标等。假设我们要自定义一个按钮的样式,包括背景颜色和字体。创建Theme资源在项目资源管理器中右键点击,选择“New Resource” > “Theme”。选择创建的Theme资源,进入Theme选项卡。设置样式属性为Button控件设置背景颜色和字体。例如,设置Button的font_color属性为(绿色),设置font属性为自定义的字体资源。应用Theme资源。

chenlz2007的博客 1325

Godot学习04 - UI界面

在游戏开发中,UI界面往往是游戏世界的皮肤。本篇作为Godot学习的第四站,我们将正式踏入UI设计的大门,学习如何构建清晰、美观且交互友好的操作界面。

UE4引擎技术分享 484

Godot引擎开发:UI和用户交互_自定义UI控件

在Godot引擎中,自定义UI控件是一个强大的功能,允许开发者根据自己的需求创建独特的用户界面元素。通过继承现有的控件或从头开始创建新的控件,可以在游戏或应用中实现高度定制化的UI。本节将详细介绍如何在Godot引擎中自定义UI控件,并提供具体的代码示例。假设我们需要创建一个带有特殊动画效果的按钮,可以继承Button控件并添加自定义的动画逻辑。创建一个新的脚本文件在Godot编辑器中,右键点击项目资源管理器中的res://目录,选择New Script,命名为,并将其附加到一个Button节点上。

chenlz2007的博客 730

Godot GUI:皮肤系统(一)

《Docs » GUI » GUI skinning》 哦,漂亮的皮肤 本教程是关于UI皮肤的高阶教程。大多数游戏不会需要这个,因为它们顶多使用 Label/TextureRect/ TextureButton/TextureProgress。 然而,很多类型的游戏常会有复杂的UI,比如MMO,传统的RPG,模拟类以及策略类游戏。还有一些包含游戏内编辑器,或者网络连接接口的游戏,它们的UI也会...

开发游戏的老王 2586

使用sklearn学习多项式回归(三)

1,什么是线性 我们无数次提到”线性“这个名词。在支持向量机中,我们也曾经提到最初的支持向量机只能够分割线性可分的数据,然后引入了”核函数“来帮助我们分类那些非线性可分的数据。我们也曾经说起过,比如说决策树,支持向量机是”非线性“模型。所有的这些概念,让我们对”线性“这个词非常熟悉,却又非常陌生——因为我们并不知道它的真实含义。接下来我们看看线性回归模型改进的核心之一:帮助线性回归解决非线性问题。 1.1,变量之间的线性关系 ”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量

理科男同学 5100

飞控算法-姿态解算之互补滤波

飞控乱入之姿态解算 姿态解算是通过读取各个传感器的数据进行融合最终得到当前飞行器的姿态,姿态通常用Euler角(Roll-Pitch-Yaw)来表示 姿态解算框架 姿态解算的数据源可来自于陀螺仪或加速度计,他们分别都可以得到当前姿态,但实际上他们都有各自的传感器性能的优缺点,需要取长补短,进行数据融合才能得到真实的姿态,这种方法简称 互补滤波 算法 传感器特性 互补滤波 姿态解...

GoolyOh的专栏 1万+

Godot UI布局指南

可以在统一在主题中设置新的Panel类型进行类样式设置,也可直接在面板中的“主题覆盖” 使用新的“StyleBoxTexture” 来设置“AtlasTexture”, 设置“AtlasTexture” 在 “Sub-Region”编辑子区域即可。Container 组件结合组件设置,控制设置的方位(上,下,左,右,居中),设置是收缩还是撑满容器。特定节点的样式,而不想影响全局,可以在该节点的“检查器 (Inspector)”面板中找到。常见用途:设置面板,弹窗底板,HUD 背景,卡片。

DYuW5gBmH的博客 711

别再到处找资源了!WinCC 7.5 SP2官方下载与Windows 10保姆级安装避坑指南

本文提供了WinCC 7.5 SP2在Windows 10上的官方下载与安装全流程指南,重点解决了资源获取难、系统兼容性问题及分卷压缩处理等常见痛点。通过详细的步骤和实用技巧,帮助用户顺利完成安装并优化配置,适用于工控领域的学习者和从业者。

weixin_32924297的博客 473

告别复杂界面:4步掌握Godot UI设计全流程

你是否还在为游戏界面布局混乱、控件响应迟钝而烦恼?本文将带你通过Godot Engine的GUI系统,用简单四步打造专业级游戏用户界面,让你的游戏交互体验直接升级!读完你将掌握:UI组件原理、布局技巧、信号连接和性能优化方法。 ## 什么是Godot UI系统? Godot的UI系统通过[scene/gui/](https://link.gitcode.com/i/62238c7276e99c

gitblog_00723的博客 1545

Modelsim安装教程以及管理员身份运行patch_dll.bat时找不到文件mgls.dll的解决

Modesim安装教程 Modesim版本有很多,但是安装方式大都相同,我们以modesim.10.5为例,电脑使用的是win10 64位,讲一下安装过程中的步骤以及出现问题的解决方法 一 安装 1.首先解压安装包,在解压的安装包内选择应用程序,右键选择管理员运行。 2.稍等一会,有的电脑会弹出是否允许modesim进行更改,选择 是 即可,然后出现下面的界面,点击下一步。 3.弹出此界面选择安装路径,选择安装路径,我是在D盘新建的文件夹,直接把文件夹中的路径复制在框内。文件夹名称切记不要带中文 4.

weixin_48564372的博客 1万+

面板数据门槛归回分析,xthreg的安装,xthreg2安装包

我用的是Stata17,数据是不平衡的面板数据,需要用到xthreg2,虽然我找到了xthreg2.ado,但是还需要安装xthreg,因为运行xthreg2需要xthreg包顺带安装的lxthreg.mlib文件。但是!我后来发现还是不行,最后是去买了一个真正能用到xthreg2的lxthreg.mlib文件,才可以运行。

weixin_55252589的博客 1万+

Godot学习记录(三)UI移动端多点触控

theme override---style--中可选texture背景,content margins可设置头像在框中的间距。4.range中step为0时禁用步长,调整alatastexture中的margin使其适应边框或调progress offset。2.兴建texture rect,设置texture为atlas texture,这样可以选取部分图片作为玩家头像。3.新建texture progress bar textures中设置背景,边框等。调试的时候要启用这个!否则电脑上调试无效!

python_use的博客 1430

Simulink仿真入门到精通(三) Simulink信号

本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记。 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulink仿真入门到精通(二) Simulink模块 Simulink仿真入门到精通(三) Simulink信号 Simulink仿真入门到精通(四) Simulink子系统 Simulink仿真入门到精通(五) Simulink模型的仿真 Simulink仿真入门到精通(六) Simulink模型保存为图片 Sim

king110108的专栏 5395

Godot引擎UI系统开发指南与优化技巧

UI系统是现代游戏开发中的核心组件,其设计直接影响用户体验和开发效率。Godot引擎采用独特的节点树架构,通过Control节点体系实现高效UI开发。在技术实现上,Godot 4.x版本引入了CSS-like样式系统和百分比锚点布局,显著提升了开发灵活性和渲染性能。特别是在独立游戏开发领域,Godot的UI系统因其轻量化和易用性优势,成为开发者的热门选择。通过合理使用TextureRect控件和布局容器,开发者可以快速构建响应式界面。针对性能优化,建议采用批处理原则和节点复用策略,这些方法在复杂UI场景中能

weixin_27603469的博客 320

USLE模型(1.2):LS因子的计算

基于USLE的甘南川西北土壤侵蚀研究。准备好30米分辨率的dem。

所有专家都曾始于新手 3481

【UVM实战】第七章:UVM中的寄存器模型(1)寄存器模型简介

寄存器模型简介~

悟已往之不谏 知来者之可追 2070
上一篇: Godot4.3类星露谷游戏开发之【昼夜循环】
下一篇: Godot4.3类星露谷游戏开发之【生长的小麦】
ForBigData
博客等级 码龄7年 221粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForBigData

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值