动画可以在RichTextLable节点,甚至print_rich输出到调试窗中。它是将若干张动图png连在一起播放,达到动画效果。
- 添加普通节点,挂接以下代码。用于生成动画资源文件,例如funny_cat.tres。
设置图片目录,设置帧间隔,保存输出的动画资源。(生成资源文件后,可以删除此节点。)
@tool
extends Node
#这个脚本允许您生成一个动画纹理资源
#从选定文件夹中的所有图像中提取。
#将此脚本放在一个节点上,在检查器中设置属性,然后点击生成
#然后,您可以查看并保存来自检查器的输出
#你可以使用像ezgif.com这样的网站从gif中提取所有的帧
@export_dir var images_directory
@export var frame_duration_sec = .1
@export var generate: bool = false:
set = _set_generate_button
@export var output: AnimatedTexture
func _set_generate_button(_new_value: bool):
generate = false
var new_animated_texture = AnimatedTexture.new()
var dir = DirAccess.open(images_directory)
var file_counter = 0
for file in dir.get_files():
if file.ends_with(".png"):
var image_texture : CompressedTexture2D = load(images_directory + "/" + file)
if image_texture != null:
new_animated_texture.set_frame_texture(file_counter, image_texture)
new_animated_texture.set_frame_duration(file_counter, frame_duration_sec)
file_counter += 1
new_animated_texture.frames = file_counter
output = new_animated_texture
- 在RichTextLabel节点,或print_rich输出:print_rich("[img=160x160]res://Images/funny_cat.tres")