我正在Xcode中使用SFML编写一个简单的游戏。我有一个要在精灵中使用的块的.png文件。此刻,我必须在下面的代码片段中键入图像的完整路径:

 sf::Image blockImage;

 if (!blockImage.LoadFromFile("/Users/me/Development/Tetris/images/block.png")) {
  cerr << "Could not load block image." << endl;
  App.Close();
 }

我宁愿不必这样对游戏中每个图像的位置进行硬编码。我知道Xcode项目可以具有“资源”,但是我以前从未使用过它,从我对Google的了解来看,它仅对使用Apple框架的项目很重要。我可以将图像添加为资源吗?我实际上如何获得它的位置并在我的代码中使用它?

谢谢!

最佳答案

您的问题尚不清楚,但我会尽力解释:

就操作系统而言,Resources只是应用程序 bundle 包中的一个文件夹,唯一与众不同的是,当应用程序启动时,Resources文件夹是默认文件路径(称为工作目录)。

这意味着,如果您的应用程序资源文件中有图片,则可以使用以下方式加载它:

blockImage.LoadFromFile("/Developer/MyApp/build/Development/Tetris.app/Contents/Resources/block.png");

要么
blockImage.LoadFromFile("block.png");

使用此调用时,操作系统将检查block.png是否在硬盘驱动器的根目录中,但找不到它,然后检查工作目录*

如果要更改工作目录,可以使用通用的unix函数
chdir(const char *path);

在Mac OS X中,哪个包含在:
#include <unistd.h>

Arjit所指的是Xcode中的一项便捷功能,您可以在任何给定目标中进行复制文件的构建阶段,并将其复制文件甚至文件夹复制到应用程序的Resources文件夹中。

希望这可以清除一切!

*实际上可能会先检查工作目录,但不确定。

关于c++ - 在C++中获取Xcode项目的资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3433185/

10-16 21:58