Godot4 代码从精灵图表批量生成动画存入AnimationPlayer

本文介绍如何使用Godot4通过代码高效地从精灵图批量生成动画,并将其存储到AnimationPlayer中。作者在尝试手动添加大量Sprite2D动画时遇到不便,于是自编代码解决这一问题。经过迭代优化,现在代码能支持处理多个贴图,创建多个轨道的动画,并保存到场景文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

前一段时间尝试用godot添加sprite2d动画时,发现数量太多,一个个添加会很麻烦

于是我尝试去找有没有快捷的方法,但是没有太多相关的技巧分享。

看到csdn上有一个godot 4 通过代码动态生成动画并保存到场景文件,但是和个人的需求还是有些出入,于是参考这个案例,自己编了一个代码。

工程文件:

代码:

@tool
extends EditorScript

func _run():
	#建立变量,在此处修改sprite2d图路径
	var texturename = "fbody_nude"
	var texturepath = "res://素材//%s.png"%texturename
	var scenepath = "res://animationplayer.tscn"
	var sprite2d = Sprite2D.new()
	sprite2d.name = texturename
	var animationplayer:AnimationPlayer
	var scene
	#查重
	if (ResourceLoader.exists(scenepath)):
		print("场景已存在")
		scene = ResourceLoader.load(scenepath)
		#打开场景
		EditorInterface.open_scene_from_path(scenepath)
		animationplayer = get_scene()
		#检查精灵图是否重复
		if (animationplayer.has_node("%s/%s"%[animationplayer.get_path(),sprite2d.name])):
			sprite2d = animationplayer.get_node(texturename)
		#精灵图不重复,建立新的精灵图
		else:
			CreateSprite2d(animationplayer,sprite2d,texturename,texturepath,16,20)
	else:
		animationplayer = AnimationPlayer.new()
		scene = PackedScene.new()
		#打开场景
		scenepack(scene,animationplayer,scenepath)
		EditorInterface.open_scene_from_path(scenepath)
		animationplayer =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值