我遇到了以下问题。我有一个播放器场景,当前只有一个 Node2D 作为根,一个带有我的 Spritesheet 的 Sprite2D 和一个动画播放器。spritesheet 包含 8 个方向上 5 个动作的动画精灵(前、左、右、后、左后、左前等)。在动画播放器中,我通过 godot 仅为每个动作创建了前部动画。
在 tscn 文件中,动画如下所示:
[sub_resource type="Animation" id="Animation_e7hpv"]
resource_name = "looking_around_front"
length = 3.6
step = 0.4
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:frame_coords")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.4, 0.8, 1.2, 1.6, 2, 2.4, 2.8, 3.2, 3.6),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [Vector2i(6, 0), Vector2i(5, 0), Vector2i(4, 0), Vector2i(5, 0), Vector2i(6, 0), Vector2i(6, 0), Vector2i(7, 0), Vector2i(4, 1), Vector2i(7, 0), Vector2i(6, 0)]
}
因为唯一改变的是值中的 y 坐标,所以我想我可以用一个小程序生成剩余的动画,并将它们直接插入到我的 tscn 文件中。
为此,我复制了每个操作的原始 sub_resource 并更改了 id、资源名称和值。其余部分保持原样。
然后我将它们添加到 tscn 中并更改 AnimationLibrary 数据对象以保存所有生成的动画。
我在这里上传了最终文件,如果您想看一下。
当我现在尝试打开该文件时,出现以下错误:
scene/resources/resource_format_text.cpp:592 - res://hero_kitten.tscn:709 - Parse Error: Expected Identifier
Failed loading resource: res://hero_kitten.tscn. Make sure resources have been imported by opening the project in the editor at least once.
第 709 行是我的根节点,我在生成过程中没有更改它:
[node "name"="HeroKitten" type="Node2D"]
所以我不明白这怎么会成为问题。正如我所说,场景是在 godot 中创建的,我只添加了动画子*资源。
*
我检查过,所有 id 都是唯一的,并且都包含在animation_libray 数据对象中。
尝试将我生成的动画样本复制到另一个场景中并且有效。但是添加所有 42 个动画似乎会导致问题..
有什么想法可以将错误查明到特定行吗?如果我必须删除每个动画一次来检查是否有问题,我也可以手动创建动画。
TLDR 我尝试过的:
- 将示例代码复制到另一个场景以检查是否仍然可以打开
- 检查所有生成的 ID 是否重复
- 检查所有生成的子资源是否在 AnimaitonLibrary 中
- 增加了 load_steps 属性以检查是否有差异