- 素材
站立.png (8行10列)
![在这里插入图片描述](https://img-blog.csdnimg.cn/98ca9c9927a74be385696f0a722bd71e.png)
跑动.png(8行8列)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c5f7b4eb343c4bb188d13e5a219c39d8.png)
- 脚本路径
![在这里插入图片描述](https://img-blog.csdnimg.cn/c4530a3dc7c64180aa427ce24dc458d0.png)
- 批量生成脚本代码
@tool
extends EditorScript
func _run():
save_one_tres("站立", 8, 10)
save_one_tres("跑动", 8, 8)
# 保存单个动画文件
# texture_name 纹理集名字
# sprite_rows_number 纹理行数,每行一个动画
# sprite_columns_number 纹理列数,每列是一个动画中的一帧
func save_one_tres(texture_name, sprite_rows_number, sprite_columns_number):
# 保存路径
var save_path = "res://" + texture_name + ".tres"
# 纹理路径
var texture_path = "res://素材//人物//巫蛮儿//" + texture_name + ".png"
# 设置纹理
var texture = ResourceLoader.load(texture_path)
var base_frame = AtlasTexture.new()
base_frame.atlas = texture
# 帧宽和高
var sprite_width = texture.get_width() / sprite_columns_number
var sprite_height = texture.get_height() / sprite_rows_number
# 批量添加动画集
var sprite_frames = get_animations(base_frame, texture_name, sprite_width, sprite_height, sprite_rows_number, sprite_columns_number)
# 保存动画集文件
ResourceSaver.save(sprite_frames, save_path, ResourceSaver.FLAG_REPLACE_SUBRESOURCE_PATHS)
# 批量添加动画集
func get_animations(base_frame, animation_library_name, sprite_width, sprite_height, sprite_rows_number, sprite_columns_number):
var sprite_frames = SpriteFrames.new()
sprite_frames.remove_animation("default")
for x in range(sprite_rows_number):
var animation_name = animation_library_name + "_" + String.num(x)
sprite_frames.add_animation(animation_name)
for y in range(sprite_columns_number):
var frame = base_frame.duplicate()
frame.region = Rect2(y * sprite_width, x * sprite_height, sprite_width, sprite_height)
sprite_frames.add_frame(animation_name, frame)
return sprite_frames
- 运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/740e92c6028f43af8deaf2a99ce68b29.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b64520cc9ddb418aa773e6aa3f965c3e.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/374d3c3c182a49bc956007e769075f4e.png)