我正在 Xcode 中使用 SFML 编写一个简单的游戏。我有一个要在 Sprite 中使用的 block 的 .png。目前,我必须在下面的代码片段中输入图像的完整路径:
sf::Image blockImage;
if (!blockImage.LoadFromFile("/Users/me/Development/Tetris/images/block.png")) {
cerr << "Could not load block image." << endl;
App.Close();
}
我宁愿不必像这样对游戏中每个图像的位置进行硬编码。我知道 Xcode 项目可以有“资源”,但我以前从未使用过它,而且从我能够通过谷歌搜索到的内容来看,它只对使用 Apple 框架的项目很重要。我可以将我的图像添加为资源吗?我如何实际获取它的位置并在我的代码中使用它?
谢谢!
最佳答案
你的问题不是很清楚,但我会尽力解释:
对于操作系统而言,Resources只是应用程序包中的一个文件夹,唯一特别的是当应用程序启动时,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/