Was verwenden Sie, um Sounds zu spielen? Ich denke, Sie könnten Sounds deaktivieren, indem Sie die Audiositzung deaktivieren - siehe AudioSessionSetActive.
Update: Ja, du hast Recht. Ich habe gerade versucht, die Audio-Session zu deaktivieren und die Sounds schienen weiter zu gehen. Vergiss es. Sie können den booleschen Flag-Ansatz verwenden, und es ist nicht notwendig, um jeden Sound herum eine Bedingung zu haben. Die Art, wie ich SFX in meinem Spiel mache, ist durch eine separate Klasse, eine Art "Ansicht", die das Modell beobachtet und Klänge für verschiedene Spielereignisse erzeugt. Auf diese Weise behalten Sie eine saubere Trennung von Bedenken im Design und wenn Sie die Sounds ausschalten möchten, trennen Sie einfach die Soundklasse vom Modell. Der Code sieht ein bisschen wie folgt aus:
@implementation Model
- (void) stepBy: (double) seconds
{
[player doSomething];
if (player.isDead)
[self sendNotification:@selector(playerHasDied:) withObject:player];
}
@end
Und der Sound Ansicht:
@implementation SFX
- (void) playerHasDied: (id) player
{
[aarghSound play];
}
@end
Natürlich kann man die tatsächliche Beobachtung Teil zu implementieren. Sie könnten NSNotificationCenter
oder schreiben Sie Ihre eigene Dispatching-Code unter Verwendung einer Reihe von Beobachtern verwenden:
@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
Die SFX Ansicht ist mit dem Modell verbunden:
Model *model = [[Model alloc] init];
SFX *sounds = [[SFX alloc] init];
[model addObserver:sounds];
Wenn Sie alle Töne deaktivieren möchten, müssen Sie nur trennen der SFX aus dem Modell; hör auf zu beobachten. Wenn die Sounds vor dem Spielstart deaktiviert werden, müssen Sie die SFX-Klasse nicht zuweisen - das spart Zeit, Leistung und Speicher.
Lesen Sie die Dokumentation zu diesem Thema und es ist wichtiger, die Audio-Priorität festzulegen. Ich kann nicht herausfinden, wie ich es in meiner Anwendung verwenden würde. – Aaron