如何在GDScript中实现点击按钮循环切换精灵纹理数组
解决GDScript图片循环切换问题
你现在的代码每次点击按钮都固定设置为数组第一个元素(索引0),没有追踪当前显示的图片位置,所以无法实现依次切换的效果。要实现循环切换,只需要添加一个变量记录当前索引,每次点击更新索引并处理循环逻辑即可。
修改步骤:
- 添加一个
current_index变量,初始值设为0,用来记录当前显示的图片在数组中的位置。 - 在按钮点击函数中,先将索引递增,再通过取模运算处理循环(当索引超过数组长度时,自动回到0),最后更新精灵纹理。
修改后的完整代码:
extends Node onready var my_sprite = get_node("/root/Game/Picture/Sprite") var new_texture = [ load("res://Art/Picture1.png"), load("res://Art/Picture2.png"), load("res://Art/Picture3.png"), load("res://Art/Picture4.png"), load("res://Art/Picture5.png"), load("res://Art/Picture6.png") ] # 新增变量:记录当前显示的图片索引 var current_index = 0 func _on_Arrow_pressed() -> void: # 索引递增,取模运算实现循环 current_index = (current_index + 1) % new_texture.size() # 设置新纹理 my_sprite.texture = new_texture[current_index]
补充说明:
new_texture.size()会返回数组的元素数量(这里是6),(current_index + 1) % 6可以保证索引始终在0到5之间循环,不会超出数组范围。- 如果希望初始显示第一张图,初始化
current_index = 0即可;如果点击第一次就切换到第二张,也可以把递增逻辑放在设置纹理之后,或者初始值设为-1,根据需求调整。
内容的提问来源于stack exchange,提问作者Hidden
相关产品推荐
相关产品推荐

