Bevy-Flash 插件介绍
Bevy-Flash
是一个为 Bevy 游戏引擎设计的轻量级动画插件,为游戏引擎引入flash动画渲染支持。通过引入该插件并对原始的swf进行相应调整后可直接导入到游戏引擎中使用。为复刻(复用)flash动画资源提供了集成现代游戏引擎的新方式,大大flash动画资源的处理问题,完全能够抛弃序列帧动画,畅快使用flash原生动画,并且是矢量的,同时也支持主要的滤镜效果渲染,较为还原flash原生效果,并在此基础上扩展了新的控制API
,使得其更加方便使用,同时提供了皮肤切换功能、帧事件、以及完成事件功能!
Github
🎯 核心特性
🔥 原生swf渲染
- 动画控制
彻底抛弃原生得控制方式,提供更加简单易用的API。 - 切换皮肤
识别皮肤Clip,提供简单易用的方式切换皮肤。 - 帧事件及完成事件 提供事件回调功能。
关于
[文档] Furau
2.1 快速集成指南
在国内网络中,安装调试如此巨大的rust的依赖并不是一个容易的事情,这里我们使用的是本地离线插件配置方案 来进行插件的安装、运行、调试
包体下载
下载Rust官方包体 https://www.rust-lang.org/zh-CN/
镜像配置
在 Powershell 中执行加速命令:
$ENV:RUSTUP_DIST_SERVER='https://mirrors.ustc.edu.cn/rust-static'
$ENV:RUSTUP_UPDATE_ROOT='https://mirrors.ustc.edu.cn/rust-static/rustup'
Rust测试
在命令行中执行下面的命令查看对应的Rust版本(效果请查看image-demo1)
rustc -V
image-demo 1:
代码拉取
请访问https://github.com/aojiaoxiaolinlin/bevy_flash/releases
拉取0.15版本的插件项目
路径设计与修改
拉取Ruffle项目 和我们的插件放置到同一个目录 目录结构关系如下:
project/
├── bevy_flash-main/
│ ├── xxx.xxx
│ └── xxx.xxx
├── ruffle/
│ └── xxx.xxx
最终依赖配置表
[package]
name = "bevy_flash"
version = "0.1.0"
edition = "2021"
authors = ["傲娇小霖霖"]
license = "MIT OR Apache-2.0"
description = "A Bevy plugin for Flash Animation"
[dependencies]
swf = { path = "../ruffle/swf"}
ruffle_render = { path = "../ruffle/render" }
ruffle_render_wgpu = { path = "../ruffle/render/wgpu" }
ruffle_macros = { path = "../ruffle/core/macros" }
swf_macro = { path = "./swf_macro" }
smallvec = { version = "1.13.2", features = ["union"] }
wgpu = { version = "23", default-features = false }
bevy = { version = "0.15", default-features = false, features = [
"bevy_asset",
"bevy_sprite",
] }
thiserror = "1.0"
anyhow = "1.0"
bitflags = "2.5"
lyon_tessellation = "1.0"
indexmap = "2.7"
copyless = "0.1.5"
uuid = "1.10"
enum-map = "2.7.3"
[dev-dependencies]
bevy = { version = "0.15" }
[profile.dev]
opt-level = 1
主要修改的部分是
swf = { path = "../ruffle/swf"}
ruffle_render = { path = "../ruffle/render" }
ruffle_render_wgpu = { path = "../ruffle/render/wgpu" }
ruffle_macros = { path = "../ruffle/core/macros" }
swf_macro = { path = "./swf_macro" }
项目运行demo
cargo run --example sample
image_demo_2
2.2 示例swf下载
调试技巧
1.如何修改测试swf
在Vscode中,可以通过检索对应的参数值修改读取的内容
swf_movie: assert_server.load("frames.swf")
swf_movie: assert_server.load("131381-idle.swf")
2.如何调试指定的分支
以最新分支为例,比如 我们需要调试 blend_render_dev 分支,就可以点击拉取分支 然后配置如下的目录结构
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2025/4/14 13:17 bevy
d----- 2025/4/14 13:21 bevy_flash
d----- 2025/4/14 13:19 swf_animation
执行案例代码:
cargo run --example sample
性能分析
常见问题
Vscode 插件推荐配置单
图片查看模糊
在浏览器中按住Ctrl + 滚轮把页面放大一些即可
Blocking waiting for file lock on package cache 卡顿
删除锁定的文件即可 请在powershell 执行
# 删除用户级锁文件
Remove-Item -Path "$env:USERPROFILE\.cargo\.package-cache" -Force
# 若使用全局安装,删除系统级锁文件(谨慎操作!)
Remove-Item -Path "C:\Program Files\Rust\.cargo\.package-cache" -Force```
术语对照表
关键帧 (Keyframe)
定义动画转折点的帧
帧率 (FPS)
FPS是图像领域中的定义,是指画面每秒帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。
SWF
SWF 是 ShockWave Flash 的缩写,是 Adobe Flash(原 Macromedia Flash)生成的一种多媒体文件格式,主要用于矢量图形、动画、音频和交互式内容的存储与播放。在本插件中是主要的兼容格式。
Fd工具
JPEXS Free Flash Decompiler(原名 FFDec)免费开源的 Flash(SWF)反编译工具 可以很方便的设计和编辑swf文件 这里可以查看和使用这个工具