无望其速成,无诱于势利。
一、展示
在 【极简】Godot4.4 快速搭建测试场景A(附完整代码/素材包)基础上,本文实现简易仓库,功能:物品堆叠。

二、复刻
(一)节点结构
1. inventory_ui.tscn
- InventoryUI(CanvasLayer)
- PanelContainer
- GridContainer
- PanelContainer
2. slot_ui.tscn
- SlotUI(VBoxContainer)
- TextureRect
- StackLabel(Label)
- NameLabel(Label)
- TextureRect

(二)独立资源/脚本
1. event_bus.gd(事件总线)
功能:集中定义信号
extends Node
@warning_ignore("unused_signal")
signal inventory_item_added(item: InventoryItem) # 添加物品
var inventory_items: Array[Resource] # 存储物品数据的列表
func _ready() -> void:
inventory_items.resize(6)
项目设置->全局->路径(该脚本的路径)->添加,使得该脚本被设置为全局脚本。

2. inventory_item.gd(物品信息模板)
功能:可复用的物品信息的模板
class_name InventoryItem
extends Resource
@export var texture: Texture
@export var name: String
@export var max_stack: int = 99
var stack: int = 0
3. inventory_item.tres(物体信息实体)
创建resource文件,并命名为 inventory_item.tres;


点击打开后,在检查中把inventory_item.gd 附加到 inventory_item.tres 上;

可以发现检查器中多出来InventoryItem,里面正是在 inventory_item.gd 中的各种数值。
(三)附加脚本
1. Egg.gd
附加到egg.tscn中的Egg节点(Sprite2D):
extends Sprite2D
## 可收集的蛋
@export var item: InventoryItem
# 蛋的默认数量
@export var stack : int = 1
# 从PickUpComponent连接的信号
func _on_pick_up_component_body_entered(body: Node2D) -> void:
if body is CharacterBody2D:
item.stack = stack
EventBus.inventory_item_added.emit(item)

最低0.47元/天 解锁文章
1757

被折叠的 条评论
为什么被折叠?



