0

我应该使用什么系统在 C 中存储资源(图像、音效等)?

一个例子是将它们存储在结构类型系统中:

struct _Resource {
    struct _Image {
        SDL_Surface *MenuButton;
    } Image;
    struct _SoundEffect {
        Mix_Chunk *MenuButtonSound;
    } SoundEffect;
} Resource;

另一个例子是将它们存储在一个数组中:

SDL_Surface *Image[5];
Mix_Chunk *SoundEffect[5];

你觉得呢?你有没有什么想法?

4

2 回答 2

2

有数百万种方法可以做到这一点。询问什么是最好的方法并不是真正有建设性的。您可能想看看其他人是如何做到的(如果不重新使用这些组件/库以避免重新发明轮子):

于 2012-07-22T16:30:06.483 回答
0

这个问题很笼统,所以这里是一般的答案:

首先,您应该知道struct数组是正交概念。你不需要在它们之间做出选择,你可以两者兼得。

现在通常,当您决定使用 时struct,这是因为数据在某种程度上是相关的。例如,如果您有可点击且具有位置的资源,则可以使用如下结构

typedef struct Resource
{
    int x, y;
    SDL_Surface MenuBotton;
    void (*click_callback)(struct Resource *);
} Resource;

说得通。但是,如果你有两个不相关的概念,例如图像和声音,将它们放在一个结构中绝对没有意义(除非有特殊情况,例如将指针发送到线程!)

所以你需要做的是,划分不同的概念,并将彼此相关的信息分组。如果您有许多实例,请根据相关信息制作结构并创建它们的数组。

最后,您可能希望拥有一个包含由某种管理器处理的所有内容的大型结构,但这当然取决于您的应用程序。

于 2012-07-22T16:32:17.107 回答