Ruby / Gosu相对文件引用的问题

时间:2013-10-23 19:23:24

标签: ruby libgosu

所以我正在用Ruby / Gosu制作游戏,加载所有图像的行看起来像这样:

@image_name = Gosu::Image.new(self, 'C:\Users\Carlos\Desktop\gamefolder\assets\bg.jpg', false)

我想根据它们相对于引用文件的位置来引用它们。包含上述行的文件位于C:\Users\Carlos\Desktop\gamefolder\,因此我认为我可以将上述内容更改为'\assets\bg.jpg''assets\bg.jpg',但这不起作用。

具体错误为“Could not load image assets/bg.jpg using either GDI+ or FreeImage: Unknown Error (Runtime Error).

1 个答案:

答案 0 :(得分:2)

如果你想获得当前目录(你的执行上下文,不一定是你所在的文件),只需使用Dir.pwd即可。将此输出到控制台以检查当前目录是否为gamefolder

要获取实际ruby文件的当前目录(相对于Dir.pwd),请使用__FILE__,例如

File.dirname(__FILE__)

将其传递给File.expand_path以获得完全合格的路径。您可以通过确保File.exists?("#{File.expand_path File.dirname __FILE__}/assets/bg.jpg")返回true来进行一些健全检查。

(尝试File.expand_path('assets/bg.jpg') ...这可能就是您所需要的全部内容。)