Qu'est-ce que vous utilisez pour jouer des sons? Je pense que vous pouvez désactiver les sons en désactivant la session audio - voir AudioSessionSetActive.
Mise à jour: Oui, vous avez raison. J'ai juste essayé de désactiver la session audio et les sons semblaient continuer. Ça ne fait rien. Vous pouvez utiliser l'approche du drapeau booléen, et il n'est pas nécessaire d'avoir une condition autour de chaque son. La façon dont je fais SFX dans mon jeu est à travers une classe séparée, une sorte de «vue» qui observe le modèle et crée des sons pour divers événements de jeu. De cette façon, vous gardez une séparation nette des problèmes dans la conception et lorsque vous souhaitez désactiver les sons, vous déconnectez simplement la classe de son du modèle. Le code ressemble un peu à ceci:
@implementation Model
- (void) stepBy: (double) seconds
{
[player doSomething];
if (player.isDead)
[self sendNotification:@selector(playerHasDied:) withObject:player];
}
@end
Et la vue sonore:
@implementation SFX
- (void) playerHasDied: (id) player
{
[aarghSound play];
}
@end
Bien sûr, vous devez mettre en œuvre la partie observation réelle. Vous pouvez utiliser NSNotificationCenter
ou écrire votre propre code dispatching en utilisant un tableau d'observateurs:
@implementation Model
- (void) addObserver: (id) object
{
[observers addObject:object];
}
- (void) sendNotification: (SEL) message
{
for (id observer in observers)
if ([observer respondsToSelector:message])
[observer performSelector:message];
}
@end
La vue SFX est connecté au modèle:
Model *model = [[Model alloc] init];
SFX *sounds = [[SFX alloc] init];
[model addObserver:sounds];
Lorsque vous souhaitez désactiver tous les sons, il vous suffit de déconnexion le SFX du modèle; arrête d'observer. Si les sons sont désactivés avant le début du jeu, vous n'avez même pas à allouer la classe SFX, ce qui économise du temps, de la performance et de la mémoire.
Lisez la documentation à ce sujet et cela convient mieux à la définition de la priorité audio. Je n'arrive pas à comprendre comment je pourrais l'utiliser dans mon application. – Aaron