2D-Audio ist nicht-richtungsabhängiger Klang, der nicht von einem bestimmten Ort ausgeht und gleich bleibt, unabhängig von der Position oder Ausrichtung des Hörers im 3D-Raum. Das bedeutet, dass die Spieler, während sie ihre Hörer im Umfeld bewegen, 2D-Audio von überall her hören können, wo sie sich umdrehen.
Mithilfe der Gingerbread House - Start .rbxl Datei als Ausgangspunkt und Gingerbread House - Complete Audio als Referenz zeigt dieses Tutorial, wie man sowohl sich wiederholende als auch einmalige 2D-Audios zu seinen Erlebnissen hinzufügt, einschließlich Anleitungen zu:
- Wiederholender Hintergrundmusik, die sofort abgespielt wird, wenn die Spieler sich mit dem Server verbinden.
- Auslösen von Audio, um den Spielern sofortiges Feedback zu ihren Spielzielen zu geben.
- Aktivieren von verschiedenen Geräuschen, um verschiedene Benutzeroberflächen-Interaktionen anzuzeigen.
Falls du während des Prozesses stecken bleibst, kannst du Gingerbread House - Complete Audio als Referenz verwenden, um deinen Fortschritt zu vergleichen.
2D-Audioobjekte
Um nicht-richtungsabhängiges Audio zu erstellen, ist es wichtig, die Audioobjekte zu verstehen, mit denen du in diesem Tutorial arbeiten wirst. Es gibt drei Haupttypen von Audioobjekten für 2D-Audio:
- Das AudioPlayer Objekt lädt und spielt die Audio-Datei ab.
- Das AudioDeviceOutput Objekt ist ein physisches Hardware-Gerät in der realen Welt, wie z.B. ein Lautsprecher oder Kopfhörer.
- Wires übertragen Audiostreams von einem Objekt zu einem anderen.
Alle diese Audioobjekte arbeiten zusammen, um den Klang von der Dateiwiedergabe zu der Hardware jedes Spielers zu übertragen. Schauen wir uns an, wie das in der Praxis funktioniert, indem wir ein Beispiel eines Spielers betrachten, der ein Headset trägt, während er ein Erlebnis auf seinem Laptop spielt:
- Das AudioPlayer lädt die 127645268874265 Audio-Asset-ID in das Erlebnis für einen Kaufgeräusch.
- Ein Wire trägt den Stream vom AudioPlayer zum AudioDeviceOutput, sodass der Stream aus dem Headset des Spielers kommt.
- Das AudioDeviceOutput Objekt überträgt den Klang zu dem physikalischen Lautsprecher des Spielers, oder in diesem Fall, seinen Kopfhörern.
Die folgenden Abschnitte gehen tiefer auf diese Objekte ein, während du lernst, wie du sowohl sich wiederholendes als auch einmaliges 2D-Audio abspielen kannst. Während du diese Objekte mit den kommenden Techniken überprüfst, kannst du genauer vorhersagen, wie du Klang von dem Erlebnis zu dem Spieler aufnehmen und übertragen kannst.
Wiederholendes Audio
Wiederholendes 2D-Audio, oder nicht-richtungsabhängiges Audio, das nahtlos abgespielt wird, sobald die Spieler sich mit dem Server verbinden, ist eine gängige Klangdesigntechnik, um eine kohärente akustische Hintergrundatmosphäre zu schaffen, unabhängig davon, was die Spieler tun oder wo sie sich im 3D-Raum befinden. Darüber hinaus sorgt wiederholendes 2D-Audio dafür, dass dein Erlebnis niemals völlig still ist, was die Spieler desorientieren und von ihren Zielen ablenken kann.
Um dieses Konzept zu demonstrieren, überprüfe, wie das folgende 2D-Audio die Qualität des Gefährlichen Raumstations Beispiels erheblich verbessert. Ohne Hintergrundmusik fühlt sich die Raumstation hohl und leblos an. Wenn die Raumstation jedoch Hintergrundmusik enthält, erscheint sie sowohl unheimlich als auch gefährlich und trägt zur insgesamt gruseligen Atmosphäre bei.
Wiederholendes Audio ist besonders nützlich, um wie du willst, dass die Spieler sich fühlen, sobald sie deinem Erlebnis beitreten. Zum Beispiel zielt das Beispiel darauf ab, den Spielern ein fröhliches Abenteuer in einem Winterwunderland zu bieten, also verwendet es eine beschwingte Audiospur, um ihre Stimmung positiv zu beeinflussen, in dem Moment, in dem sie die Umgebung betreten. Um zu sehen, wie einflussreich diese Technik sein kann, bedenke, wie sich die Erfahrung des Spielers ändern würde, wenn du das wiederholende Audio durch einen Metaltrack ersetzen würdest.
Um das wiederholende 2D-Audio im Beispiel der Gingerbread House - Complete Audio Platzdatei zu reproduzieren:
Aktiviere einen Standardhörer, der an deinem Spielercharakter angebracht ist.
- Wähle im Explorer-Fenster den SoundService aus.
- Setze im Eigenschaften-Fenster DefaultListenerLocation auf Character. Wenn du das Erlebnis ausführst, erstellt die Engine automatisch ein AudioDeviceOutput unter SoundService.
Navigiere im Explorer-Fenster zu SoundService, dann:
- Füge ein AudioPlayer Objekt hinzu, um eine Audioquelle zu erstellen.
- Füge ein AudioDeviceOutput Objekt hinzu, um einen Lautsprecher zu erstellen, der im gesamten Erlebnis abspielt.
- Füge ein Wire Objekt hinzu, um den Stream vom Audio-Player zum Lautsprecher zu übertragen.

Wähle den AudioPlayer aus und setze im Eigenschaften-Fenster:
- Setze AssetID auf rbxassetid://1841461968, um eine beschwingte Audiospur abzuspielen.
- Aktiviere Looping, damit der Audio nahtlos wiederholt wird.
- Setze Volume auf 0.2, um den Audio bei niedriger Lautstärke abzuspielen, sodass du die anderen Audioquellen im Erlebnis noch hören kannst.
Wähle den Wire aus und setze im Eigenschaften-Fenster:
- Setze SourceInstance auf deinen neuen AudioPlayer, um anzugeben, dass du willst, dass der Draht Audio von diesem spezifischen Audio-Player überträgt.
- Setze TargetInstance auf dein neues AudioDeviceOutput, um anzugeben, dass du willst, dass der Draht Audio zu diesem spezifischen Lautsprecher überträgt.
Gehe zurück zum Explorer-Fenster, füge ein Skript in den AudioPlayer ein, benenne es in LoopBackgroundMusic um, setze die RunContext-Eigenschaft auf Client und füge den folgenden Code in das Skript ein:
local audioPlayer = script.ParentaudioPlayer:Play()Code-ErklärungDas Skript beginnt damit, eine Variable zu deklarieren, die den Eltern des Skripts AudioPlayer darstellt. Das Skript setzt dann die Audioquelle so, dass sie von dem Moment an abgespielt wird, in dem der Spieler dem Erlebnis beitritt, bis zu dem Moment, in dem er das Erlebnis verlässt.
Teste das Erlebnis, um die sich wiederholende Hintergrundmusik zu hören.
Einmaliges Audio
Einmaliges 2D-Audio, oder nicht-richtungsabhängiges Audio, das einmal zu einem bestimmten Zeitpunkt und Ort abgespielt wird, es sei denn, ein Spieler löst es erneut aus, bietet den Spielern wichtige Kontextinformationen über alles, was sie nicht verpassen sollen. Die Verwendung dieses Typs von akustischem Feedback in deinen Erlebnissen ist entscheidend, da es eine sofortige, klare Rückmeldung zu wichtigen Spielmechaniken und Spieleraktionen gibt, wie z.B. dem Start eines Bosskampfes oder dem Verlust einer erheblichen Menge an Gesundheit.
Die folgenden Abschnitte bieten Umsetzungsdetails für häufige Spielszenarien, in denen Spieler zeitgerechtes, nicht-richtungsabhängiges Feedback benötigen, einschließlich Spielerfeedback, UI-Elementinteraktionen und Sprachübertragung für Tutorials.
Spielerfeedback
Während die Spieler in deinem Erlebnis fortschreiten, ist es wichtig, dass sie sofort akustisches Feedback über den Status von allem erhalten, was ihr Gameplay beeinflusst, wie z.B. ihren Punktestand, ihre Gesundheit oder ihren Level-Fortschritt. Da diese Art von Audio direkt mit den Zielen der Spieler verbunden ist, ist es wichtig, dass diese Klänge klar, hörbar und nützliche sowie genaue Informationen vermitteln.
Um dieses Konzept zu demonstrieren, überprüfen wir das folgende einmalige 2D-Audio aus der Plattformspiel Vorlage, das abgespielt wird, während die Spieler springen und Münzen sammeln:
- Ein luftiger Wusch-Geräusch wird abgespielt, sobald der Spieler die Sprungtaste auf seinem Gerät drückt.
- Ein hochfrequenter Klingelton und Geräusch von klimpernden Münzen wird abgespielt, sobald der Charakter des Spielers eine Münze berührt.
Beide Geräusche sind im Kontext des 3D-Raums sofort erkennbar und helfen den Spielern zu verstehen, wie erfolgreich ihre Aktionen sind, ohne sich nur auf visuelle Hinweise zu verlassen.
Wenn du mehrere Geräusche gleichzeitig abspielst, können bestimmte Geräusche für die Spieler wichtiger sein als andere. In diesem Fall vermittelt das Geräusch der Münzsammlung wertvollere Informationen über das Gameplay als das Sprunggeräusch, sodass das Erlebnis es bei leicht erhöhter Lautstärke abspielt. Es gibt jedoch keine Standards oder Regeln, um einen großartigen Mix zu erreichen, also stimme die Geräusche in deinem Erlebnis so ab, dass sie das widerspiegeln, was du für am wichtigsten hältst.
Zum Beispiel enthält das Beispiel verschiedene Audioauslöser im gesamten Erlebnis, doch sie sind nicht alle gleich wichtig, um die Hauptziele des Erlebnisses zu verstehen: Gummibärchen zu sammeln, um das Lebkuchenhaus zu öffnen. Um sicherzustellen, dass die Spieler wissen, was sie tun müssen, verdreifacht das Beispiel die Amplitude des akustischen Feedbacks, wann immer der Spieler ein Gummibärchen einsammelt.
Um das einmalige Zustandsfeedback-Audio im Beispiel der Gingerbread House - Complete Audio Platzdatei zu reproduzieren:
Navigiere im Explorer-Fenster zu Workspace ⟩ Gumdrops ⟩ Gumdrop, dann:
- Füge ein AudioPlayer Objekt hinzu, um eine Audioquelle zu erstellen.
- Füge ein AudioDeviceOutput Objekt hinzu, um einen Lautsprecher zu erstellen, der im gesamten Erlebnis abspielt.
- Füge ein Wire Objekt hinzu, um den Stream vom Audio-Player zum Lautsprecher zu übertragen.

Wähle den AudioPlayer aus und setze im Eigenschaften-Fenster:
- Setze AssetID auf rbxassetid://9113723699, um eine sanfte Kaumgeräuschspur abzuspielen.
- Setze TimePosition auf 0.15, um die Audiospur näher an das tatsächliche Kaumgeräusch zu starten.
- Setze Volume auf 3, um den Audio bei hoher Lautstärke abzuspielen, damit du das Gummibärchen-Geräusch über anderen Audioquellen im Erlebnis hören kannst.
Wähle den Wire aus und setze im Eigenschaften-Fenster:
- Setze SourceInstance auf deinen neuen AudioPlayer, um anzugeben, dass du willst, dass der Draht Audio von diesem spezifischen Audio-Player überträgt.
- Setze TargetInstance auf dein neues AudioDeviceOutput, um anzugeben, dass du willst, dass der Draht Audio zu diesem spezifischen Lautsprecher überträgt.
Dupliziere Gumdrop, bis du drei Gummibärchen hast, und verteile sie in der Umgebung.
Gehe zurück zum Explorer-Fenster, navigiere zu ServerScriptService, füge ein Skript hinzu, benenne es in GumdropService um, setze die RunContext-Eigenschaft auf Server und füge den folgenden Code in das Skript ein:
-- Initialisieren von Dienstenlocal Workspace = game:GetService("Workspace")local Players = game:GetService("Players")local ServerStorage = game:GetService("ServerStorage")local TweenService = game:GetService("TweenService")-- Modulelocal Leaderboard = require(ServerStorage.Leaderboard)local PlayerData = require(ServerStorage.PlayerData)-- Variablenlocal gumdropsFolder = Workspace.Gumdropslocal gumdrops = gumdropsFolder:GetChildren()local GUMDROP_KEY_NAME = PlayerData.GUMDROP_KEY_NAMElocal GUMDROP_AMOUNT_TO_ADD = 1local function updatePlayerGumdrops(player, updateFunction)-- Aktualisiere die Gummibärchen-Tabellelocal newGumdropAmount = PlayerData.updateValue(player, GUMDROP_KEY_NAME, updateFunction)-- Aktualisiere das Gummibärchen-LeistungsdiagrammLeaderboard.setStat(player, GUMDROP_KEY_NAME, newGumdropAmount)-- Überprüfe, ob der Spieler drei Gummibärchen gesammelt hatif newGumdropAmount >= 3 then-- Spiele das Tür-Ereignis-Audio ab, wenn der Spieler drei Gummibärchen gesammelt hatlocal audioPlayer = Workspace.Door.AudioPlayeraudioPlayer:Play()-- Animere die Tür, um nach unten zu bewegenlocal doorPart = Workspace.Doorlocal tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Linear)local tween = TweenService:Create(doorPart, tweenInfo, {Position = doorPart.Position + Vector3.new(0, -15, 0)})tween:Play()endend-- Definieren des Ereignishandlerslocal function onGumdropTouched(otherPart, gumdrop)if gumdrop:GetAttribute("Active") thenlocal character = otherPart.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Spieler hat ein Gummibärchen berührtlocal audioPlayer = gumdrop.AudioPlayeraudioPlayer:Play()gumdrop.Transparency = 1gumdrop:SetAttribute("Active", false)updatePlayerGumdrops(player, function(oldGumdropAmount)oldGumdropAmount = oldGumdropAmount or 0return oldGumdropAmount + GUMDROP_AMOUNT_TO_ADDend)endendend-- Einrichten von Ereignis-Listenernfor _, gumdrop in gumdrops dogumdrop:SetAttribute("Active", true)gumdrop.Touched:Connect(function(otherPart)onGumdropTouched(otherPart, gumdrop)end)endCode-ErklärungDas Skript beginnt mit der Initialisierung der Dienste Workspace, Players, ServerStorage und TweenService, sodass es auf deren Kinder und Funktionalitäten zugreifen kann. Anschließend werden die Module Leaderboard und PlayerData in ServerStorage benötigt; diese Module sind dafür verantwortlich, ein Leistungsdiagramm in der oberen rechten Ecke des Bildschirms zu erstellen und zu aktualisieren, das die Anzahl der Gummibärchen verfolgt, die ein Spieler in der Umgebung gesammelt hat.
Die Funktion updatePlayerGumdrops des Skripts ist hauptsächlich dafür verantwortlich, das Leistungsdiagramm jedes Mal zu aktualisieren, wenn ein Spieler ein Gummibärchen sammelt, und auf den Moment zu warten, in dem sie alle drei Gummibärchen sammeln, damit sie einen räumlichen Sound und eine Animation für die Tür des Lebkuchenhauses auslösen können. Für weitere Informationen zu diesem Teil des Skripts siehe 3D-Audio hinzufügen - Ereignisfeedback.
Die Funktion onGumdropTouched des Skripts ist der Ort, an dem die meisten Arbeiten zum Auslösen von 2D-Audio für das Spielerfeedback stattfinden, und sie nimmt zwei Argumente:
- otherPart - Ein Teil, der mit dem Gummibärchen kollidiert.
- gumdrop - Ein kugelförmiger Teil, der ein Gummibärchen darstellt.
Wenn irgendetwas mit dem Gummibärchen-Teil kollidiert, überprüft das Skript zuerst, ob das Gummibärchen aktiv ist. Wenn ja, wird geprüft, ob das kollidierende Objekt ein Spieler ist. Wenn ja, spielt das Skript dann:
- Spielt die 2D-Audiospur vom Audio-Player ab.
- Macht das Gummibärchen unsichtbar.
- Deaktiviert das Gummibärchen, sodass die Spieler nicht mehr mit dem unsichtbaren Gummibärchen interagieren können.
- Aktualisiert das Leistungsdiagramm für den Spieler, der das Gummibärchen berührt hat.
Schließlich richtet das Skript Ereignislistener ein, sodass für jedes Gummibärchen eine Funktion mit dem Touched Ereignis verbunden wird, das die Funktion onGumdropTouched aufruft, wenn ein Spieler das Gummibärchen berührt.
Teste das Erlebnis, um das Kaumgeräusch zu hören, nachdem du ein Gummibärchen gesammelt hast.
UI-Interaktion
Wenn Spieler mit deinen Benutzerschnittstellenelementen (UI) interagieren, wie z.B. wenn sie mit der Maus über ein Kontrollkästchen fahren oder eine Schaltfläche für den Kauf auswählen, ist es wichtig, sofortiges Feedback zu geben, sodass sie intuitiv verstehen, wie sie mit deiner UI interagieren. Zum Beispiel ändern viele Designer die visuellen Eigenschaften von UI, wenn Spieler Einstellungen aktivieren oder deaktivieren, um den Status der Einstellung zu kommunizieren.
Für Spieler mit Sehbehinderungen, bei denen Farbänderungen oder Animationen schwieriger zu erkennen sind, ist es jedoch nützlich, mehrere Formen von sensorischem Feedback für deine UI-Interaktionen bereitzustellen, sodass sie für so viele Spieler wie möglich zugänglich und intuitiv bleiben. Um dieses Konzept zu erweitern, betrachten wir die folgenden UI-Zustände, die für die Kauf-Schaltflächen der UGC Homestore Vorlage wichtig sind:
- Im Fokus - Zeigt an, dass der Spieler ein UI-Element hervorhebt, um es auszuwählen.
- Beim Überfahren - Zeigt an, dass der Spieler mit dem Cursor über ein UI-Element fährt.
- Ausgewählt - Zeigt an, dass der Spieler ein UI-Element durch seine Eingabe ausgewählt hat.
Alle drei Interaktionen sind für den Hauptbenutzerfluss der Vorlage, bei dem Spieler Avatar-Kleidung und -Accessoires durchsuchen, auswählen und kaufen, von größter Bedeutung, sodass es äußerst wichtig ist, dass niemand verwirrt darüber ist, wie er mit der UI interagieren kann. Um die Spieler auf den Erfolg vorzubereiten, bietet die Vorlage sowohl visuelles als auch akustisches Feedback für jede UI-Interaktion.




Um ein Beispiel zu geben, wie du mehrere Formen von sensorischem Feedback konfigurieren kannst, bietet das Beispiel sowohl visuelles als auch akustisches Feedback, wann immer Spieler die Pfefferminzknopf auf dem Bildschirm drücken. Wenn die Spieler nicht mit der Taste interagieren, erscheint sie wie eine typische Pfefferminzsüßigkeit, aber wenn sie die Taste drücken, wird im Beispiel:
- Ein erfreulicher Jingle-Audio-Track abgespielt.
- Die Taste wird mit einem türkisfarbenen Farbton getönt.
- Die Taste wird leicht nach unten auf dem Bildschirm bewegt.
Von hier aus kannst du diese Interaktion mit allen Arten von nützlichen Spielaktionen verbinden, wie z.B. das Öffnen eines Menüs oder das Kauf eines Artikels.


Um das einmalige UI-Interaktionsaudio in der Beispieldatei Gingerbread House - Complete Audio zu reproduzieren:
Navigiere im Explorer-Fenster zu StarterGui ⟩ 2DAudioButton, dann:
- Füge ein AudioPlayer Objekt hinzu, um eine Audioquelle zu erstellen.
- Füge ein AudioDeviceOutput Objekt hinzu, um einen Lautsprecher zu erstellen, der im gesamten Erlebnis abspielt.
- Füge ein Wire Objekt hinzu, um den Stream vom Audio-Player zum Lautsprecher zu übertragen.

Wähle den AudioPlayer aus und setze im Eigenschaften-Fenster AssetID auf rbxassetid://3422389728, um eine retro Jingle-Audiostrecke abzuspielen.
Wähle den Wire aus und setze im Eigenschaften-Fenster:
- Setze SourceInstance auf deinen neuen AudioPlayer, um anzugeben, dass du willst, dass der Draht Audio von diesem spezifischen Audio-Player überträgt.
- Setze TargetInstance auf dein neues AudioDeviceOutput, um anzugeben, dass du willst, dass der Draht Audio zu diesem spezifischen Lautsprecher überträgt.
Gehe zurück zum Explorer-Fenster, füge ein LocalScript in 2DAudioButton ein, benenne es in PlayAudioWhenPressed um und füge den folgenden Code in das Skript ein:
local TweenService = game:GetService("TweenService")local buttonGui = script.Parentlocal buttonImageButton = buttonGui.ButtonFrame.ButtonImageButtonlocal buttonAudioPlayer = buttonGui.AudioPlayerlocal tweenInfo = TweenInfo.new(.2, Enum.EasingStyle.Exponential)local buttonTweenByIsPressed = {-- Gedrückt[true] = TweenService:Create(buttonImageButton, tweenInfo, {Position = buttonImageButton.Position + UDim2.fromScale(0, .1),ImageColor3 = Color3.fromRGB(117, 255, 255),}),-- Standard[false] = TweenService:Create(buttonImageButton, tweenInfo, {Position = buttonImageButton.Position,ImageColor3 = Color3.fromRGB(255, 255, 255),}),}local function onIsPlayingChanged()local isPlaying = buttonAudioPlayer.IsPlayinglocal tween = buttonTweenByIsPressed[isPlaying]tween:Play()endonIsPlayingChanged()buttonAudioPlayer:GetPropertyChangedSignal("IsPlaying"):Connect(onIsPlayingChanged)buttonAudioPlayer.Ended:Connect(onIsPlayingChanged)buttonImageButton.Activated:Connect(function(_hit)buttonAudioPlayer:Play()end)Code-ErklärungDas Skript beginnt mit dem Abrufen von:
- Dem TweenService, damit es UI-Elemente animieren kann.
- Dem Eltern-2DAudioButton ScreenGui Objekt des Skripts.
- Der Pfefferminzsüßigkeit ImageButton.
- Dem entsprechenden Audio-Player mit deinem Jingle-Audio-Track.
Anschließend definiert das Skript:
- Ein TweenInfo-Objekt, das angibt, dass die Animation der Taste mit einem exponentiellen Animationsstil abgespielt wird.
- Zwei Tweens, die den gedrückten oder ungedrückten Zustand der Taste darstellen.
- Der gedrückte Zustand true bewegt die Taste leicht nach unten auf dem Bildschirm und färbt sie in einem türkisfarbenen Farbton.
- Der ungedrückte Zustand false bewegt die Taste zurück an ihre ursprüngliche Position auf dem Bildschirm und entfernt den vorherigen Farbton.
Der Rest des Skripts beschreibt, wo die meiste Arbeit für das Auslösen von 2D-Audio für UI-Interaktionen stattfindet, also lass uns überprüfen, wie die Funktion onIsPlayingChanged und die Ereignis-Listener zusammenarbeiten für den Benutzerfluss der UI:
- buttonImageButton.Activated überwacht, ob ein Spieler die Taste anklickt, und ruft dann die Funktion Play() auf, um das zugehörige Audio vom Audio-Player abzuspielen. Dieser Prozess schaltet die AudioPlayer.IsPlaying-Eigenschaft von false auf true.
- buttonAudioPlayer:GetPropertyChangedSignal("IsPlaying") überwacht, ob sich die IsPlaying-Eigenschaft des Audio-Players ändert, und ruft dann die Funktion onIsPlayingChanged auf.
- Die onIsPlayingChanged Funktion nutzt diese Informationen, um das Tween auszulösen, das das visuelle Erscheinungsbild auf dem Bildschirm verändert.
- Um zu verhindern, dass der Spieler das Audio versehentlich neu starten kann, wenn er die Taste schnell hintereinander anklickt, überwacht buttonAudioPlayer.Ended den Audio-Player, um zu beenden und ruft die Funktion onIsPlayingChanged erneut auf.
Es ist wichtig zu beachten, dass das onIsPlayingChanged Event nur ausgelöst wird, wenn es sich von false auf true ändert, was bedeutet, dass es nicht feuert, wenn es von true auf false wechselt. Dies ist beabsichtigtes Verhalten aufgrund von Komplikationen mit dem Timing der Replikation von Eigenschaften von Server zu Client. Aus diesem Grund wird das Ended-Ereignis in diesem Beispiel bereitgestellt und überwacht, um beide Fälle abzudecken.
Teste das Erlebnis, um den Jingle zu hören, jedes Mal, wenn du die Taste auf dem Bildschirm drückst.