所以我正在用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).
”
答案 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')
...这可能就是您所需要的全部内容。)