Android OBB/ZIP loading (cocos2dx)
Android OBB/ZIP loading (cocos2dx)
我在处理APK扩展时遇到问题。在Java方面,我可以设置我应该设置的所有内容,但在c++方面,我似乎无法正确修改代码。
在CCFileUtilsAndroid::getFileData函数内部:
if (fullPath[0] != '/')
{
CCLOG("GETTING FILE RELATIVE DATA: %s", fullPath.c_str());
pData = CCFileUtils::sharedFileUtils()->getFileDataFromZip("/storage/sdcard0/Android/obb/com.example.package/main.1.com.example_package.obb", fullPath.c_str(), pSize);
}
但是pData变量始终为null(如果我是对的,这意味着它无法加载)。我错过了什么?
提前感谢
(ps:包在那里,我使用的是正确的路径)
所以,我终于解决了我的问题,而且比我想象的要容易得多。我没有修改c++源代码,而是在Cocos2dxHelper java类中找到了一个函数,它就是nativeSetApkPath。在调查了它的使用后,发现Cocos2dx将apk包作为zip文件处理。由于我的obb毕竟只是一个重命名的zip文件,所以我可以毫无问题地使用它。除了声音,我所有的资产都装得很好。这需要另一个快速解决方案。
大部分功劳都归于论坛帖子(http://www.cocos2d-x.org/boards/6/topics/11243)以及Irwin Billing,因为这是我可以在Cocos2dxMusic.java和Cocos2dxSound.java类中进行修改的基础。
此外,我必须确保声音资产没有压缩在zip文件中(根据谷歌提供的文件)。
为此,我在Mac上使用了以下命令:
zip -rn .ogg:.mp3:.wav assets.zip assets/
我最后要提到的是文件夹结构。我对资产文件夹进行了复制和压缩,所以在压缩文件中有一个文件夹。这太棒了,因为apk的工作方式是一样的,我不需要做更多的修改。
最后,我修改了源文件,只是不要忘记仔细查看,并更改一些值Cocos2dxHelper.java:http://pastebin.com/RqeYkTkP
Cocos2dx音乐.java:http://pastebin.com/RXjwmEyb
Cocos2dxSound.java:http://pastebin.com/1GfDB6jb
顺便说一句,我将ttf
字体文件保留在assets/
中,因为Cocos2dxTypefaces
使用本机代码从AssetManager
(也称为apk
文件)加载它们。
版本2.x
只是我的意见。3.x
不工作Cocos2dxHelper.java
工作。
- 在 Cocos2dx 中初始化粒子效果后的警告 - "libpng warning: iCCP: known incorrect sRGB profile"
- 无法在 Cocos2dx 中使用受密码保护的 zip 文件
- tensorflow c++ loading pbtxt
- 返回布尔值在 cocos2dx 的 onTouchBegan() 中是什么意思?
- cocos2dx 将值强制转换为属性字符串
- 如何使用 c++ 在 cocos2dx 中定义非静态方法
- 链接 boost 库时"Error while loading shared libraries"引发的,除了我无法使用 root 访问权限来修复它
- Cocos2dx: 无法存储数据?
- onTouch开始不工作cocos2dx
- 在 cocos2dx 中过渡后场景冻结
- 无法在 cocos2dx 中实现暂停功能
- 无法在 cocos2dx 中显示菜单菜单项图像
- Cocos2dx 如何在没有调度选择器的情况下每 5 秒调用一次函数
- 无法求解FullPathForFilename:COCOS2DX中可能缺少文件错误
- 使用ENET/COCOS2DX的C 多人游戏
- C++ & cocos2dx -- 无法以编程方式添加节点
- C++ Loading a DLL
- High cpu loading. C++/sfml
- 在 Cocos2dx 中绘制矩形
- Android OBB/ZIP loading (cocos2dx)