本文由 FrameSprite 作者工作流整理,AI 辅助编写,引用原始技术资料;构造案例不代表模型或引擎实测。
区分实例播放属性与共享动画资源,按需要复制 SpriteFrames,避免复制纹理造成无谓内存占用。
多个 AnimatedSprite2D 可以引用同一个 SpriteFrames。修改资源里的帧、循环或动画速度会影响所有共享者;只改变某个角色播放状态时,优先改节点属性。确需独立修改帧库时,为该实例复制资源并核对嵌套资源是否还共享。资源复制不等于要给每个敌人复制整张贴图。
对两个敌人检查 sprite_frames 是否相同资源。区分同名资源与同一对象引用。加载同一资源路径常用于复用,不能把场景实例不同当成内部所有资源都独立。
一个敌人被减速时,先考虑其 speed_scale 或游戏状态,而非调用共享 SpriteFrames.set_animation_speed。美术帧库定义动作,实例播放速度表达该角色当前状态,两者职责不同。
需要给单独敌人换某些帧时,可复制 SpriteFrames 并重新赋给该节点。若还要修改 AtlasTexture 的区域,继续核对该子资源是否共享;不要假设浅复制会隔离全部嵌套对象。
场上放 A、B 两个相同敌人,只修改 A。记录 A/B 的资源身份、帧数量和播放速度;验收 B 不变且贴图无需重复下载。退出与重进场景再测,避免只在编辑器预览通过。
A、B 起初指向 library-1;为 A 创建 library-2,并把 idle 帧数从 6 改为 7。
A 使用 7 帧,B 保持 6 帧;两者允许继续引用同一不可变纹理。
引用图样本不代表 Godot 所有版本的复制参数行为;需按当前 Resource 文档检查嵌套复制。
目标 | 修改层 | 影响 |
|---|---|---|
one actor slower | node playback | one instance |
all enemies new clip | shared SpriteFrames | all users |
unique frame replacement | isolated library | one library |
敌人 A 和 B 最初共用一个有 6 帧的 SpriteFrames。给 A 增加一帧之前,先让 A 获得需要独立修改的资源;预期 A 为 7 帧、B 仍为 6 帧。不要把两个节点实例不同误认为它们引用的资源也不同。不可变纹理可以继续共享,而帧列表、时长或材质参数是否独立要分别确认。把资源标识和帧数打印到调试面板,在真正的场景实例化路径验证;编辑器预览、继承场景和运行时复制不是同一个操作。
帧灵导出的同一套帧适合被多个敌人复用,问题通常是运行时修改共享状态。复制前明确哪一层需要可变;没有必要为每个敌人生成全新序列帧或复制整套 PNG。这样既保留素材一致性,也让调试时能直接指出哪个对象拥有改动。
本次补充由 AI 辅助整理,按公开原始技术资料核对。可下载的输入与预期结果是原创构造案例,不代表模型或引擎实测;实际项目应按步骤保留自己的验收记录。
不能这样假设,要检查引用和 local-to-scene 设置。
通常不需要,未修改的纹理可以复用。
一般优先使用节点播放控制,减少不必要资源。
Resource · Godot Engine
SpriteFrames · Godot Engine
原文:https://cn.framesprite.com/guides/godot-shared-spriteframes-resource-instance-edit
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。