ios - 在资源文件夹的主包中找不到纹理图集文件

标签 ios file-io cocos2d-iphone ccspritebatchnode mainbundle

我遇到了一个问题,我的 Resource 目录中的一个文件没有被识别为在 Main Bundle 中。

我正在使用 texturePacker 使用 pvr 文件格式创建纹理图集。 texturePacker 的输出产生两个文件 xxx_iPhone-hd.pvr.ccz 和 xxx_iPhone-hd.plist。这两个文件存储在我的 cocos2d 项目的 Resource 目录中。将文件存储到 Resource 文件夹后,我转到 Resource 文件夹并右键单击“将文件添加到“myProject””(取消选中将项目复制到目标框中)。

当我的 cocos2d 项目运行并试图加载这个文件时,绝对路径对于 Main Bundle 是未知的。具体来说,我的代码执行以下代码行:

backgroundBgNode = [CCSpriteBatchNode batchNodeWithFile:@"StoreMenuBackground_iPhone.pvr.ccz"];

cocos2d 代码知道该设备具有视网膜显示屏并修改文件名以创建“StoreMenuBackground_iPhone-hd.pvr.ccz”的 relPath。然后它会尝试执行以下操作:

NSString *imageDirectory = [relPath stringByDeletingLastPathComponent]; 
fullpath = [[NSBundle mainBundle] pathForResource:file 
                                           ofType:nil 
                                      inDirectory:imageDirectory];

这导致完整路径为零。我之前使用上述过程创建了一个不同的 xxx_iPhone5-hd.pvr.ccz 文件,并且上述代码成功返回了完整路径。我已经非常仔细地检查并重新检查了拼写,没有发现任何问题。我还尝试删除并重新添加项目“构建阶段”的“复制捆绑资源”下的文件。我可以做些什么来强制 mainBundle 找到这个文件吗?

最佳答案

您应该验证该文件实际上位于 bundle 中。

您可以通过右键单击构建的包(在项目的 DerivedData 文件夹中)并选择“显示包内容”来完成此操作。如果您不知道如何找到构建的产品,请针对设备进行存档构建(存档构建不适用于模拟器)。在打开的管理器窗口中,右键单击该应用程序并选择“在 Finder 中显示”,这会将您带到 xcarchive。在 xcarchive 上运行“显示包内容”并导航到/Products/Applications 并在 bundle 上执行另一个“显示包内容”。

如果该文件存在,但位于子文件夹中(不在包的根目录中),那么您已在 Xcode 内创建了一个文件夹引用,由蓝色文件夹图标表示。删除它并重新添加,这次取消选中“添加文件”对话框中的“为...创建文件夹引用”复选框。

如果该文件存在,请复制其文件名并将其粘贴回代码中。即使您仔细检查,大小写差异有时也难以捉摸且难以注意到。

关于ios - 在资源文件夹的主包中找不到纹理图集文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577772/

相关文章:

适用于 armv7、armv7s、arm64 的 iOS 开源构建

ios - 即使已触发 segue,ViewController 也不会显示

ios - 验证用户身份的地方-游戏中心

cocos2d-iphone - Cocos2d v3 的 CCLayerColor

ios - Cocos2D 游戏场景中 CCSpriteBatchNode 和纹理表的最佳方法是什么

ios - 启用 ARC 的 AFNetworking 2 后异步内存泄漏

objective-c - 我无法打开邮件应用程序?

Ruby 文件写入 Windows 返回错误的文件大小?

java - 读取和写入文件无法正常工作

c# - FileStream 的同步要求。(开始/结束)(读/写)