extends Sprite2D @export var export_dir = "res://asset/art/ui/inverted_point_light_masks/" @export var frames = 24 @export var frame_texture_size = Vector2(1000, 600) func _ready() -> void: if texture and export_dir: var image = texture.get_image() if image: if DirAccess.dir_exists_absolute(export_dir): DirAccess.remove_absolute(export_dir) DirAccess.make_dir_recursive_absolute(export_dir) for i in range(frames): var frame_image = Image.create_empty( frame_texture_size.x, frame_texture_size.y, false, Image.FORMAT_RGBA8 ) frame_image.fill(Color.WHITE) # 最后一张图片不需要处理,保持全白 if i < frames - 1: var i_scale = cubic_interpolate(1.0, 0.0, 1.0, 0.0, float(i) / frames) var i_len = int(frame_texture_size.y * i_scale) image.resize(i_len, i_len, Image.INTERPOLATE_LANCZOS) var i_offset = ( Vector2(frame_texture_size.x - i_len, frame_texture_size.y - i_len) * 0.5 ) for y in range(i_len): for x in range(i_len): var color = image.get_pixel(x, y) frame_image.set_pixel( x + i_offset.x, y + i_offset.y, Color(1.0, 1.0, 1.0, 1.0 - color.r) ) var export_path = export_dir + str(i).pad_zeros(3) + ".png" frame_image.save_png(export_path) print("Exported to: " + export_path) else: print("No image found in texture")