我正在使用 SFML 制作一个简单的蛇游戏,目前正在尝试添加一种声音,每当蛇“吃掉”其中一个点时就会播放。所以我下载了一个声音文件并将其放在我的项目目录中,并将其添加到我的代码中:
sf::SoundBuffer buffer;
buffer.loadFromFile("Crunch.wav")
sf::Sound crunch;
crunch.setBuffer(buffer);
if (snake.isTouching(food))
{
crunch.play();
}
当我从 Visual Studio 运行游戏时,它运行良好。但是我喜欢把我完成的游戏放在我的桌面上,所以我进入了我的 Debug 文件夹,找到了我的 .exe 文件,创建了一个快捷方式并将它放在我的桌面上。但是每当我尝试使用桌面快捷方式运行程序时,输出窗口上都会显示消息“无法打开声音文件'Crunch.wav'(无法打开流)”。有谁知道是什么原因造成的?当我从 VS 运行程序时,程序按预期运行。提前致谢。
最佳答案
loadFromFile() 在当前目录中查找,当您在 Visual Studio 中构建和运行时,该目录默认为 ProjectName\ProjectName,在这种情况下,您似乎在 .vcxproj 文件旁边的 ProjectName\ProjectName 文件夹中有 Crunch.wav,所以您应确保以与项目文件夹中相同的方式将 Crunch.wav 与 .exe 一起保存,在这种情况下,将 Crunch.wav 复制到与 .exe 相同的位置
关于c++ - 为什么从桌面运行程序时找不到我的声音文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63063835/