跨平台游戏引擎 Axmol-2.9.0 发布
Axmol 2.9.0 版本是一个以错误修复和功能改进为主的次要 LTS
长期支持版本,发布时间: 2025 年 10 月 5 日
🙏感谢所有对 axmol 项目的贡献者,包括财务赞助者:@scorewarrior(公司)、@peterkharitonov、@duong、@thienphuoc、@bingsoo、@asnagni 以及 历史赞助者
🙏我们衷心感谢 @scorewarrior(公司) 的鼎力支持——他们在 GitHub Sponsors 追加了每月 $2,000 的赞助金额,并在此之前已通过 Open Source Collective 持续每月赞助 $3,000。你们的慷慨帮助 Axmol 项目不断繁荣与成长。
仓库地址
- GitHub (官方): https://github.com/axmolengine/axmol
- Gitee (镜像): https://gitee.com/simdsoft/axmol
与 2.8.x 相比的重要变化:
3D 音频与基础效果
- 由 @rh101 在 #2719 中添加音频声像(panning)支持
- 由 @rh101 在 #2740 中添加在 3D 空间任意位置播放音频的支持
- 由 @rh101 在 #2772 中初步实现使用 OpenAL 添加音频效果与滤波器的支持
- 由 @rh101 在 #2779 中修复混响属性值
其他变化
- 由 @halx99 在 #2784 中为移动设备添加屏幕方向控制
- 由 @halx99 在 #2735 中添加新 API
EventKeyboard::isRepeat
- 由 @halx99 添加新 API
ZipFile::createWithData
并将ZipFile::createWithBuffer
标记为弃用 - 由 @halx99 增强 Base64 解码器以跳过空白/换行并防止过早终止
- 由 @halx99 在 #2792 中添加
Device::resolveOrientation
并精简分辨率逻辑
Bug 修复
- 由 @halx99 在 #2704 中修复
ui::MediaPlayer
在 Apple 平台可能崩溃的问题 - 由 @paulocoutinhox 在 #2713 中修复 AAB 构建中偶尔缺失 Android 资源的问题
- 由 @rh101 在 #2749 中修复日志调用中的格式说明符
- 由 @halx99 在 #2802 中修复在场景切换期间重置 director 时的崩溃问题
改进
- 由 @halx99 在 #2805 中为 Http 添加
setDataCallback
以支持流式数据 - 由 @halx99 在 #2791 和 #2795 中改进 iOS EditBox 在键盘显示时的方向处理
- 由 @rh101 在 #2793 中添加从场景堆栈中提取前一个场景的支持
- 由 @halx99 在销毁
_scheduler
前销毁ScriptEngine
实例以尊重依赖关系 - 由 @halx99 修复 SpineTest 瞄准 y 轴问题
- 由 @halx99 在引擎中用新 API 替换已弃用调用
- 由 @aismann 在 #2731 中更新
controller.cpp
:将 “Audio - NewAudioEngine” 重命名为 “AudioEngine” - 由 @halx99 修复 lua-tests 中的若干非关键问题
- 由 @halx99 从模板 cmake 模块中移除不存在的 yaml-cpp
- 由 @halx99 移除 CI pull-request 触发事件:
ready_for_review
- 由 @halx99 更新 kcp 以解决 cmake 错误
- 由 @halx99 在 iOS 上的
layoutSubviews
时派发applicationScreenSizeChanged
- 由 @halx99 将 iOS 内部类 EARenderView 重命名为 RenderHostView
- 由 @rh101 在 #2799 中使
Director::getRunningScene()
在从Node::onEnter()
调用时对任何类型的场景切换返回预期结果
SDK 和工具更新
- webview2: 1.0.3405.78 => 1.0.3485.44
三方库更新
- curl: 8.15.0 => 8.16.0
- freetype: 2.13.3 => 2.14.1
- jpeg-turbo: 3.1.1 => 3.1.2
- luajit: 2.1-f9140a6 => 2.1-871db2c
发布文件 MD5 校验值
axmol-2.9.0.zip
: 0100b8b0a73d25b0fb020590fc2e8a54axmol-bs-2.9.0.zip
: 114afdb56e2f507c831163e6cd6385e8
下载
GitHub
国内用户可尝试复制链接使用迅雷下载
- axmol-2.9.0.zip
- axmol-bs-2.9.0.zip
百度网盘
- axmol-2.9.0.zip
- axmol-bs-2.9.0.zip
SourceForge
Axmol-2.9.0
本版亮点详解
新增 API:ZipFile::createWithData
原因
现有的 API ZipFile::createWithBuffer
存在设计缺陷。它接受一个 const char*
缓冲区参数,但没有明确说明所有权,这使得该 API 依赖于外部缓冲区的生命周期。这可能导致未定义行为以及难以排查的错误。
改进
新的 API ZipFile::createWithData
接受一个 Data
对象作为参数。由于 Data
支持移动语义,所有权和生命周期更加明确。这确保了更安全的使用方式,降低了误用风险,并为开发者提供更可预测的行为。
为移动设备添加屏幕方向控制
原因
此前,屏幕方向只能通过平台设置静态配置
(例如 iOS 的 info.plist
或 Android 的 AndroidManifest.xml
)。这种方式灵活性有限,
因为一旦应用启动,渲染方向就无法在运行时更改。
改进
引入了新的核心 API Device::setPreferredOrientation
。
- 当在
info.plist
(iOS)或AndroidManifest.xml
(Android)中已声明支持的方向时,
该 API 允许在运行时动态修改渲染方向。 - 开发者现在可以通过编程方式在竖屏和横屏模式之间切换,
以适应游戏玩法、UI 流程或用户偏好。
收益
- 一致的跨平台方向处理。
- 无需平台特定代码即可动态调整方向。
- 在运行时无缝适配渲染方向,提升用户体验。
开发者注意
引擎内部仅执行基础适配。
仍建议开发者在 AppDelegate::applicationScreenSizeChanged
中自行处理分辨率和布局调整策略,
以确保在不同设备和方向下的正确缩放和 UI 行为。