我遇到一个问题,即我的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查找该文件?

最佳答案

您应该验证该文件确实在捆绑包中。

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

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

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

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

10-10 10:05
查看更多