我的代码:
我目前正在开发一个游戏,并且在代码的几个不同部分中我正在使用一些资源(图像/声音/动画等)。为了避免两次加载相同的资源,我编写了一个 ResourceManager,如果我将字符串传递给它,它将返回所需的资源。
这是一个例子:
Image myImage = imageManager.getImage("princess");
这样,当我想使用它时,我可以在不知道文件名称或位置的情况下引用资源。这里的诀窍是我必须先加载图像,然后才能像这样获取它们:
imageManager.loadImage("res/princessImage.png", "princess");
这将从给定文件创建 ImageObject,并将其存储到具有给定键的 HashMap 中。
我的问题:
我真的不想硬编码这些资源的路径,因为每次我决定移动或重命名任何资源文件时都必须更改源代码。
一个可能的解决方案(?):
我考虑创建另一个 HashMap,它读取某种 configFile 并将 in-code-resource-names 映射到 HashMap 中的资源路径。该文件看起来有点像这样:
princess: res/princess.png
hero: res/hero.png
sword: res/items/sword.png
这样我就可以安全地使用诸如“公主”、“英雄”或“剑”之类的资源名称,并且在我编码时不用担心它们在硬盘上的位置。每当我移动或重命名资源文件时,我只需更新此配置文件中的路径/名称,一切都会好起来的。
另一方面,我认为拥有一个将每个 in-code-resource-name 映射到路径的巨型文件非常难看。这可能会导致一个巨大的 String to String HashMap,我也必须将其存储在 ResourceManager 中。事情可能会变得非常混乱/不清楚。
有人对我有更好的解决方案吗?
我真的很感谢你的帮助,
谢谢 :)