我们正在开发一些具有各种声音效果以及口头短语和表达的游戏。当前设计将声音片段存储为单独的编号文件。一组#defines将人类可读的名称映射到文件名。例如:
#define SOUND_COOL @"0038" // Cool!
#define SOUND_YOU_GOT_IT @"0039" // You got it!
#define SOUND_FANTASTIC_1 @"0040" // Fantastic! version 1
#define SOUND_FANTASTIC_2 @"0041" // Fantastic! version 2
这种方法的一个优点是代码变得非常易读。你可以通过阅读看到会播放什么声音。
其中一个问题是我们有很多语调或某些短语的版本。在适当的情况下,手动编码的switch语句从可用版本中随机选择。
如果有多个可用的话,可以概括一下并且可以选择播放随机版本。这里的一个选择可能是放弃#define方法并创建一个合适的数据库表,其中的字段允许选择符合给定条件的所有声音文件。然后,类和方法将封装所需的功能。
在可能有数百个声音文件的应用程序中组织/编目声音的其他一些想法是什么?
答案 0 :(得分:2)
NSDictionary怎么样?您可以将字典存储在plist中并在启动时加载一次。键将是某种声音ID(@“酷”,@“你得到它”等),值可以是字符串或数组。
一个字符串表示只有一个声音,所以播放它;数组意味着有多个选择,所以选择一个随机选择。
你可以将所有这些包装在一个类中,所以如果你进行了如下调用:
[soundBox playSound:@"Cool"];
soundBox
会有这样的代码:
id obj = [myDictionary objectForKey:key];
if ([obj isKindOfClass:[NSString class]]) {
// play the sound in file named obj
} else if ([obj isKindOfClass:[NSArray class]]) {
// pick a random sound from the array obj
}
答案 1 :(得分:0)
一些想法: