【GDScript】装备栏

本文详细介绍如何在Godot引擎中实现游戏内的装备系统,包括物品拖拽、装备栏交互及角色属性变化等功能。

Godot 3.2.4 rc3

接着上一篇 【GDScript】物品的拖拽,我们开始做装备栏

开始之前先在 Goods.gd 脚本里添加两 信号。swap_goods 方法里进行发出信号,判断物品是否发生改变,修改后的代码如下:

signal swaped_property(old_property, new_property)	# 交换属性信号
signal unload(property)	# 卸下物品

func swap_goods(a, b):
	# 交换物品信号
	a.emit_signal("swaped_property", a.goods_property, b.goods_property)
	b.emit_signal("swaped_property", b.goods_property, a.goods_property)
	
	# 卸下物品信号
	if a == null:
		b.emit_signal("unload", b.goods_property)
	if b == null:
		a.emit_signal("unload", a.goods_property)
	
	# 进行属性交换
	var p_temp = a.goods_property
	a.goods_property = b.goods_property
	b.goods_property = p_temp

Goods.tscn 场景里添加一个 TextureRect 节点,节点名称改为 Background,勾选 show_behind_parent 属性,设置 self modulate 属性为黑色,勾选 expand 属性,设置 rect_min_size 属性为 50x50
在这里插入图片描述

rect_min_size 属性

场景节点如下
在这里插入图片描述

Goods.gd 脚本 setget 部分添加修改 Background 背景的代码,如下:

export (Texture) var background setget set_background
onready var background_rect = $Background

func set_background(value):
	background = value
	if background_rect == null:
		yield(self, "ready")
	background_rect.texture = value

将 文件系统里的 Godot 图标 icon.png 文件,拖放到根节点 Goods 节点的 Background 属性上,用于拖拽时隐藏背景图。

get_drag_data 方法里添加一行代码 drag_node.background_rect.visible = false
在这里插入图片描述


装备面板场景

新建一个场景,添加一个 Panel 节点作为根节点,调整它的大小,修改名称为 EquipmentPanel,保存场景,然后再给它添加一个脚本,脚本创建完先不写代码。如下
在这里插入图片描述
选中 Goods 节点按 Ctrl + D,复制 6 个,然后调整位置,完成后

错误的,你忘记了之前的顺序 💬 第四步:创建文字交互UI组件 在 main.tscn 中添加一个 CanvasLayer 节点,用于UI 在 CanvasLayer 下添加一个 Panel 节点,作为对话框背景 在 Panel 下添加一个 RichTextLabel 节点,命名为 DialogueText 设置 RichTextLabel 属性: bbcode_enabled = true fit_content_height = true align = Center valign = Center custom_fonts/normal_font 设置为你喜欢的字体(可从 res/fonts/ 导入) 🔧 第五步:为文字添加点击交互功能 选中 DialogueText 节点,点击右上角“+”按钮,添加一个 ColorRect 节点(用于高亮) 设置 ColorRect 为透明黄色,modulate = (1, 1, 0, 0.3) 将其位置设为 (0, 0),大小与文字框一致 设置为不可见,默认隐藏 🧾 第六步:创建 dialogue_system.gd 脚本并挂载 在 scripts/ 文件夹中新建 dialogue_system.gd 编写以下基础代码: 将该脚本挂载到 DialogueText 节点上 ✅ 第七步:运行项目,测试点击文字高亮功能 点击“播放”按钮运行项目 鼠标点击“剑”字,应该会出现黄色高亮框 控制台会输出“点击了名词:剑” 📌 当前成果 项目结构清晰,便于后期扩展 实现了“点击名词高亮”功能 为后续“拾取、查看、动作”等系统打下基础 ✅ 下一步建议 实现名词点击后的动作绑定(如拾取物品) 添加“玩家状态”显示装备、属性 创建“探索状态”与“战斗状态”切换机制
最新发布
11-02
我想要知道如果我要开发下面这款游戏,应该提前准备好哪些东西,应该从哪些步骤开始逐步搭建一个完整的游戏,因为我发现功能太多,要做的太多,却无法提前看到可视化的阶段成果,做得就十分迷茫,没有方向 【我是一名独立游戏开发者,还未进行过一款游戏的正式发行,现在想要你帮我调研一下游戏市场和玩家需求,我有一个游戏初步设计概念,是一个纯文字游戏,玩家可以通过点击文字,选择选项,玩家可以和名词性文字进行一定程度互动,实现和艾尔登法环类似效果不过是全文字,请你帮我客观真实分析该游戏市场前景,是否可行,优缺点详细分析,并给我一些游戏深化建议,比如游戏是否做联机模式,或者玩家和别的玩家互相攻击,游戏技术可行性分析,我是用godot引擎进行开发 回合制感觉确实是一个战斗方面的好点子,可以分为两种模式,正常探索和遭遇怪物进入回合战斗,类似于博德之门3这样的设计,还有你认为我是哪种商业模式,市场广且前景发展好,我决定在steam上先进行发行买断制游戏,我也想要发行在手机平台,但是需要申请版号,可能是后期考虑,《生命线》《80天》等销量超百万份,《Sable》这几款游戏详细给我专业分析一下,我可以先试玩一下 不错,代码和项目管理都很不错,不过我想要的是纯文字游戏,最多再加上音效和文字特效,屏幕震动特效这些,是不需要玩家碰撞体这些的,不需要实际人物操作,而是做一个类似于一本书这样,玩家根据不断选择和探索来推动故事发展,我需要的是把文字做出花来,比如点击“我”代表玩家,就可以查看自己的装备,实现动作这些,玩家可以将不同文字标记各种颜色或者进行标记,就不会丢失重要物品,但是游戏开始本身不会有标记,可以进行新手引导,文字是可互动的文字,godot是否能实现这个功能?比如说碰到名词性文字,比如说一把破烂长剑,玩家点击就可以进行拾取等等功能,不用一下写完,一步步来指导我就行,一步步做先从搭建项目开始,不要想一步登天直接完成,我说继续就可以开启下一阶段制作,不过你可以列一个项目大纲,发挥强大的项目管理能力 现在我要开发一款文字游戏,我使用的是godot引擎,玩家可以通过点击可互动文字与游戏进行交互,此外玩家也可以通过选择自己进行动作选择,装备切换等操作,现在我需要做出第一个战斗系统,我希望战斗系统是类似这样的,玩家通过探索,发现敌人,此为战前阶段,玩家可以切换替身(可以附身已死亡的类人生物,有契合度设计),武器,各种增益道具,切换各种动作,如奔跑,跳跃,蹲下,躲避等动作;但是一旦进入怪物探测范围或者被怪物发现,就会进入战斗状态,触发回合制战斗系统,在一个回合内使用各种资源将会被限制量化,类似于博德之门3战斗系统;战斗结束后,会有奖励阶段,设置物品爆率,小怪可以刷三次通过复活点,精英怪和boss只有一次,每刷一次物品爆率降低;所以我现在需要先把这样的基本战斗系统做出来,我需要你一步步详细指导我如何从最开始godot创建项目开始搭建,要求要有强大的项目管理能力,尽可能全力帮我完成,并解释相关代码让我好查错修改】
10-31
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值