我一直计划通过改变饱和度和色调值将我的精灵更改为更深一点的颜色。但这样做似乎非常棘手,因为 Godot 模块只讨论通过modulate如下选项更改精灵的颜色:
node.modulate= Color(0, 50, 2,0.5)
Run Code Online (Sandbox Code Playgroud)
这样做是将整个精灵更改为新颜色,而我只想将现有颜色变成更深一点的颜色,就像我们在 Photoshop 中使用“曲线”或“色阶”所做的那样 - 但不是那么精致。任何基本的方法也会有帮助。
目前,我只能进行“颜色叠加”而不改变不透明度。 只要不改变整个精灵的不透明度而仅改变叠加颜色,任何添加具有不透明度变化的颜色叠加的方法都会有所帮助。
我正在开发一个带有导入 PNG Sprites 的 2D 游戏。如果需要更多信息,我很乐意提供。
附加信息 -
我的精灵是什么样子
我想通过这样的代码两次使其变暗 -
通过执行 node.modulate= Color(0.0, 0.0, 0.0,1) ,它会变成这样 -

我之所以避免手动执行此操作,是因为我有太多的精灵,并且为所有精灵执行此操作会很乏味。
我一直在尝试以这种方式从单例脚本发送信号:
if(Input.is_action_just_pressed("ui_select")):
emit_signal("update_inventory")
#More Code underneath -
Run Code Online (Sandbox Code Playgroud)
我已经在显示我的库存项目的 UI 元素上声明了信号。像这样 -
signal update_inventory
Run Code Online (Sandbox Code Playgroud)
以及通过编辑器连接到它的函数的声明 -
func _on_Inventory_update_inventory():
#My code here
Run Code Online (Sandbox Code Playgroud)
我试图理解一个类似的问题(我认为是这样?) 这里。我完全无法理解。我看到有人在里面说 - 信号是对象本地的。他们,真的吗?如果是,为什么不正常调用该函数?信号点会被打败,不是吗?
我也需要一种方法来解决信号问题。也许我没有正确配置它。我哪里错了?
如果需要,我非常乐意提供更多信息。