2D-Audio hinzufügen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

2D-Audio ist nicht-richtungsabhängiger Klang, der nicht von einem bestimmten Ort ausgeht und unabhängig von der Position oder Ausrichtung des Zuhörers im 3D-Raum gleich bleibt. Das bedeutet, dass die Spieler, während sie ihre Zuhörer durch die Umgebung bewegen, 2D-Audio von überall hören können, wohin sie sich auch drehen.

Mit der Gingerbread House - Start .rbxl-Datei als Ausgangspunkt und Gingerbread House - Complete Audio als Referenz zeigt dieses Tutorial, wie man sowohl sich wiederholendes als auch einmaliges 2D-Audio in seine Spiele einfügt, einschließlich Anleitungen zu:

  • Wiederholender Hintergrundmusik, die sofort spielt, wenn die Spieler sich mit dem Server verbinden.
  • Auslösen von Audio, um den Spielern sofortiges Feedback gemäß ihren Spielzielen zu geben.
  • Aktivieren verschiedener Klänge, um unterschiedliche Benutzeroberflächeninteraktionen anzuzeigen.

Wenn Sie während des Prozesses an irgendeinem Punkt stecken bleiben, können Sie Gingerbread House - Complete Audio als Referenz verwenden, um Ihren Fortschritt zu vergleichen.

2D-Audioobjekte

Um nicht-richtungsabhängiges Audio zu erstellen, ist es wichtig, die Audioobjekte zu verstehen, mit denen Sie während dieses Tutorials arbeiten werden. Es gibt drei Haupttypen von Audioobjekten für 2D-Audio:

  • Das AudioPlayer-Objekt lädt und spielt die Audio-Datei.
  • Das AudioDeviceOutput-Objekt ist ein physisches Hardwaregerät in der realen Welt, wie z. B. ein Lautsprecher oder Kopfhörer.
  • Wires übertragen Audio-Streams von einem Objekt zum anderen.

All diese Audioobjekte arbeiten zusammen, um den Klang von der Dateiwiedergabe zu der Hardware jedes Spielers zu übertragen. Lassen Sie uns ansehen, wie dies in der Praxis funktioniert, indem wir ein Beispiel eines Spielers betrachten, der ein Headset trägt, während er ein Spiel auf seinem Laptop spielt:

  • Das AudioPlayer lädt die 127645268874265 Audio-Asset-ID in das Spiel für einen Währungskaufsound.
  • Ein Wire überträgt den Stream vom AudioPlayer zum AudioDeviceOutput, sodass der Stream aus dem Headset des Spielers kommt.
  • Das AudioDeviceOutput-Objekt überträgt den Klang an den physischen Lautsprecher des Spielers oder in diesem Fall an seine Kopfhörer.

Die folgenden Abschnitte gehen tiefer auf diese Objekte ein und beziehen sich auf sie, während Sie lernen, wie man sowohl sich wiederholendes als auch einmaliges 2D-Audio abspielt. Wenn Sie diese Objekte mit den kommenden Techniken überprüfen, können Sie genauer vorhersagen, wie Sie den Klang vom Spiel zum Spieler erfassen und übertragen können.

Wiederholendes Audio

Wiederholendes 2D-Audio, oder nicht-richtungsabhängiges Audio, das nahtlos wiederholt wird, sobald die Spieler sich mit dem Server verbinden, ist eine gängige Klangdesigntechnik, um einen kohärenten auditiven Hintergrund bereitzustellen, unabhängig davon, was die Spieler tun oder wo sie sich im 3D-Raum befinden. Darüber hinaus stellt wiederholendes 2D-Audio sicher, dass Ihr Spiel niemals völlig still ist, was die Spieler desorientieren und von ihren Zielen ablenken kann.

Um dieses Konzept zu demonstrieren, überprüfen Sie, wie das folgende 2D-Audio die Qualität des Hazardous Space Station Beispiels erheblich verbessert. Ohne Hintergrundmusik fühlt sich die Raumstation hohl und leblos an. Wenn die Raumstation jedoch Hintergrundmusik enthält, fühlt sie sich sowohl unheimlich als auch gefährlich an, was zur insgesamt gruseligen Atmosphäre beiträgt.

Ohne wiederholendes 2D-Audio
Mit wiederholendem 2D-Audio

Wiederholendes Audio ist besonders nützlich, um festzulegen, wie Sie möchten, dass sich die Spieler fühlen, sobald sie Ihrem Spiel beitreten. Zum Beispiel zielt das Beispiel darauf ab, den Spielern ein fröhliches Abenteuer in einem Winterwunderland zu bieten, daher verwendet es einen fröhlichen Audiotrack, um ihre Stimmung positiv zu beeinflussen, sobald sie die Umgebung betreten. Um zu sehen, wie einflussreich diese Technik sein kann, überlegen Sie, wie sich die Erfahrung des Spielers ändern würde, wenn Sie das wiederholende Audio gegen einen Metal-Track austauschen würden.

Um das wiederholende 2D-Audio im Beispiel Gingerbread House - Complete Audio zu reproduzieren:

  1. Aktivieren Sie einen Standard-Zuhörer, der an Ihren Spielercharakter angehängt ist.

    1. Wählen Sie im Explorer-Fenster den SoundService aus.
    2. Setzen Sie im Properties-Fenster DefaultListenerLocation auf Character. Wenn Sie das Spiel ausführen, erstellt die Engine automatisch ein AudioDeviceOutput unter SoundService.
  2. Navigieren Sie im Explorer-Fenster zu SoundService, dann:

    1. Fügen Sie ein AudioPlayer-Objekt hinzu, um eine Audioquelle zu erstellen.
    2. Fügen Sie ein AudioDeviceOutput-Objekt hinzu, um einen Lautsprecher zu erstellen, der im gesamten Spiel spielt.
    3. Fügen Sie ein Wire-Objekt hinzu, um den Stream vom Audio-Player zum Lautsprecher zu übertragen.
  3. Wählen Sie den AudioPlayer aus, und setzen Sie im Properties-Fenster:

    1. Setzen Sie AssetID auf rbxassetid://1841461968, um einen fröhlichen Audiotrack abzuspielen.
    2. Aktivieren Sie Looping, damit das Audio nahtlos wiederholt wird.
    3. Setzen Sie Volume auf 0.2, um das Audio bei niedriger Lautstärke abzuspielen, damit Sie die anderen Audioquellen im Spiel weiterhin hören können.
  4. Wählen Sie den Wire aus, und setzen Sie im Properties-Fenster:

    1. Setzen Sie SourceInstance auf Ihren neuen AudioPlayer, um anzugeben, dass Sie möchten, dass der Draht Audio von diesem speziellen Audio-Player überträgt.
    2. Setzen Sie TargetInstance auf Ihr neues AudioDeviceOutput, um anzugeben, dass Sie möchten, dass der Draht Audio zu diesem speziellen Lautsprecher überträgt.
  5. Gehen Sie zurück zum Explorer-Fenster, fügen Sie ein Script in AudioPlayer ein, benennen Sie es in LoopBackgroundMusic um, setzen Sie die RunContext-Eigenschaft auf Client und fügen Sie den folgenden Code in das Skript ein:

    local audioPlayer = script.Parent
    audioPlayer:Play()

    Das Skript beginnt damit, eine Variable zu deklarieren, die das übergeordnete AudioPlayer des Skripts darstellt. Das Skript setzt dann die Audioquelle so, dass sie vom Moment an abspielt, in dem der Spieler dem Spiel beitritt, bis zu dem Moment, in dem er das Spiel verlässt.

  6. Testen Sie das Spiel, um die wiederholende Hintergrundmusik zu hören.

Einmaliges Audio

Einmaliges 2D-Audio, oder nicht-richtungsabhängiges Audio, das einmal zu einem bestimmten Zeitpunkt und an einem bestimmten Ort abgespielt wird, es sei denn, ein Spieler löst es erneut aus, bietet den Spielern wichtige Kontexte zu allem, was sie nicht verpassen sollen. Die Verwendung dieser Art von akustischem Feedback in Ihren Spielen ist entscheidend, da sie eine sofortige, klare Reaktion auf wichtige Spielmechaniken und Spieleraktionen bietet, wie z. B. den Beginn eines Bosskampfes oder den Verlust einer erheblichen Menge an Gesundheit.

Die folgenden Abschnitte bieten Implementierungsdetails für gängige Spielszenarien, in denen die Spieler zeitnahes, nicht-richtungsabhängiges Feedback benötigen, einschließlich Gameplay-Feedback, Interaktionen mit UI-Elementen und Voiceover-Erzählungen für Tutorials.

Gameplay-Feedback

Während die Spieler durch Ihr Spiel 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 Fortschritt im Level. 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 Platformer Vorlage, das abgespielt wird, wenn die Spieler springen und Münzen sammeln:

  • Ein luftiger Wusch-Sound wird abgespielt, sobald der Spieler die Sprungtaste auf seinem Gerät drückt.
  • Ein hochfrequenter Klingelton und das Geräusch von Münzen, die sich bewegen, werden abgespielt, sobald der Charakter des Spielers eine Münze berührt.

Beide Klänge sind im Kontext des 3D-Raums sofort erkennbar und helfen den Spielern, den Erfolg ihrer Aktionen zu verstehen, ohne sich ausschließlich auf visuelle Hinweise verlassen zu müssen.

Wenn Sie mehrere Klänge gleichzeitig abspielen, können bestimmte Klänge für die Spieler wichtiger sein als andere. In diesem Fall vermittelt das Geräusch der Münzsammlung wertvollere Gameplay-Informationen als das Sprunggeräusch, sodass das Spiel es bei leicht höherer Lautstärke abspielt. Es gibt jedoch keine Standards oder Regeln, um einen großartigen Mix zu erzielen, also stimmen Sie die Klänge in Ihrem Spiel so ab, wie Sie es für am wichtigsten halten.

Zum Beispiel enthält das Beispiel verschiedene Audioauslöser im gesamten Spiel, aber sie sind nicht alle auf dem gleichen Wichtigkeitsgrad für das Verständnis des Hauptziels des Spiels: Sammeln Sie Gumdrops, 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 einen Gumdrop sammelt.

Um das einmalige Status-Feedback-Audio im Beispiel Gingerbread House - Complete Audio zu reproduzieren:

  1. Navigieren Sie im Explorer-Fenster zu WorkspaceGumdropsGumdrop, dann:

    1. Fügen Sie ein AudioPlayer-Objekt hinzu, um eine Audioquelle zu erstellen.
    2. Fügen Sie ein AudioDeviceOutput-Objekt hinzu, um einen Lautsprecher zu erstellen, der im gesamten Spiel spielt.
    3. Fügen Sie ein Wire-Objekt hinzu, um den Stream vom Audio-Player zum Lautsprecher zu übertragen.
  2. Wählen Sie den AudioPlayer aus, und setzen Sie im Properties-Fenster:

    1. Setzen Sie AssetID auf rbxassetid://9113723699, um einen sanften Kaugeräusch-Audiotrack abzuspielen.
    2. Setzen Sie TimePosition auf 0.15, um den Audiotrack näher am tatsächlichen Kaugeräusch zu starten.
    3. Setzen Sie Volume auf 3, um das Audio bei hoher Lautstärke abzuspielen, damit Sie das Gumdrop-Geräusch über andere Audioquellen im Spiel hören können.
  3. Wählen Sie den Wire aus, und setzen Sie im Properties-Fenster:

    1. Setzen Sie SourceInstance auf Ihren neuen AudioPlayer, um anzugeben, dass Sie möchten, dass der Draht Audio von diesem speziellen Audio-Player überträgt.
    2. Setzen Sie TargetInstance auf Ihr neues AudioDeviceOutput, um anzugeben, dass Sie möchten, dass der Draht Audio zu diesem speziellen Lautsprecher überträgt.
  4. Duplizieren Sie Gumdrop, bis Sie drei Gumdrops haben, und verteilen Sie sie dann in der Umgebung.

  5. Gehen Sie zurück zum Explorer-Fenster, navigieren Sie zu ServerScriptService, fügen Sie ein Script ein, benennen Sie es in GumdropService um, setzen Sie die RunContext-Eigenschaft auf Server und fügen Sie den folgenden Code in das Skript ein:

    -- Initialisierung der Dienste
    local Workspace = game:GetService("Workspace")
    local Players = game:GetService("Players")
    local ServerStorage = game:GetService("ServerStorage")
    local TweenService = game:GetService("TweenService")
    -- Module
    local Leaderboard = require(ServerStorage.Leaderboard)
    local PlayerData = require(ServerStorage.PlayerData)
    -- Variablen
    local gumdropsFolder = Workspace.Gumdrops
    local gumdrops = gumdropsFolder:GetChildren()
    local GUMDROP_KEY_NAME = PlayerData.GUMDROP_KEY_NAME
    local GUMDROP_AMOUNT_TO_ADD = 1
    local function updatePlayerGumdrops(player, updateFunction)
    -- Aktualisieren der Gumdrop-Tabelle
    local newGumdropAmount = PlayerData.updateValue(player, GUMDROP_KEY_NAME, updateFunction)
    -- Aktualisieren des Gumdrop-Leaderboards
    Leaderboard.setStat(player, GUMDROP_KEY_NAME, newGumdropAmount)
    -- Überprüfen, ob der Spieler drei Gumdrops gesammelt hat
    if newGumdropAmount >= 3 then
    -- Spielen Sie das Türereignis-Audio ab, wenn der Spieler drei Gumdrops sammelt
    local audioPlayer = Workspace.Door.AudioPlayer
    audioPlayer:Play()
    -- Animieren Sie die Tür, um nach unten zu bewegen
    local doorPart = Workspace.Door
    local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Linear)
    local tween = TweenService:Create(doorPart, tweenInfo, {Position = doorPart.Position + Vector3.new(0, -15, 0)})
    tween:Play()
    end
    end
    -- Definieren des Ereignishandlers
    local function onGumdropTouched(otherPart, gumdrop)
    if gumdrop:GetAttribute("Active") then
    local character = otherPart.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Spieler hat einen Gumdrop berührt
    local audioPlayer = gumdrop.AudioPlayer
    audioPlayer:Play()
    gumdrop.Transparency = 1
    gumdrop:SetAttribute("Active", false)
    updatePlayerGumdrops(player, function(oldGumdropAmount)
    oldGumdropAmount = oldGumdropAmount or 0
    return oldGumdropAmount + GUMDROP_AMOUNT_TO_ADD
    end)
    end
    end
    end
    -- Einrichten von Ereignis-Listenern
    for _, gumdrop in gumdrops do
    gumdrop:SetAttribute("Active", true)
    gumdrop.Touched:Connect(function(otherPart)
    onGumdropTouched(otherPart, gumdrop)
    end)
    end

    Dieses Skript beginnt mit der Initialisierung der Dienste Workspace, Players, ServerStorage und TweenService, damit es auf deren Kinder und Funktionen zugreifen kann. Dann erfordert es die Module Leaderboard und PlayerData in ServerStorage; diese Module sind verantwortlich für die Erstellung und Aktualisierung eines Leaderboards in der oberen rechten Ecke des Bildschirms, das die Menge an Gummibärchen verfolgt, die ein Spieler in der Umgebung sammelt.

    Die Funktion updatePlayerGumdrops des Skripts ist hauptsächlich dafür verantwortlich, das Leaderboard jedes Mal zu aktualisieren, wenn ein Spieler einen Gumdrop sammelt, und auf den Moment zu warten, in dem sie alle drei Gumdrops sammeln, damit es einen positionalen Sound und eine Animation für die Tür des Lebkuchenhauses auslösen kann. Für weitere Informationen zu diesem Teil des Skripts siehe 3D-Audio hinzufügen - Ereignis-Feedback.

    Die Funktion onGumdropTouched des Skripts ist der Ort, an dem der Großteil der Arbeit für das Auslösen von 2D-Audio für Gameplay-Feedback erfolgt, und sie nimmt zwei Argumente:

    • otherPart - Ein Teil, der mit dem Gumdrop kollidiert.
    • gumdrop - Ein sphärischer Teil, der einen Gumdrop darstellt.

    Wenn irgendetwas mit dem Gumdrop-Teil kollidiert, überprüft das Skript zuerst, ob der Gumdrop aktiv ist. Wenn ja, überprüft es, ob das kollidierende Objekt ein Spieler ist. Wenn ja, dann:

    • Spielt es den 2D-Audiotrack vom Audio-Player ab.
    • Macht den Gumdrop unsichtbar.
    • Deaktiviert den Gumdrop, sodass die Spieler nicht mit dem unsichtbaren Gumdrop interagieren können.
    • Aktualisiert das Leaderboard für den Spieler, der den Gumdrop berührt hat.

    Schließlich richtet das Skript Ereignis-Listener ein, sodass für jeden Gumdrop eine Funktion mit dem Touched-Ereignis verbunden wird, die die Funktion onGumdropTouched aufruft, wenn ein Spieler den Gumdrop berührt.

  6. Testen Sie das Spiel, um das Kaugeräusch zu hören, nachdem Sie einen Gumdrop gesammelt haben.

UI-Interaktion

Wenn Spieler mit Ihren Benutzeroberflächen (UI)-Elementen interagieren, wie z. B. das Überfahren eines Kontrollkästchens oder das Auswählen eines Kauf-Buttons, ist es wichtig, sofortiges Feedback zu geben, damit sie intuitiv verstehen, wie sie mit Ihrer UI interagieren. Viele Designer ändern beispielsweise die visuellen Eigenschaften der 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 Ihre UI-Interaktionen bereitzustellen, damit 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-Buttons 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 über seine Eingabe ausgewählt hat.

Alle drei dieser Interaktionen sind entscheidend für den Hauptbenutzerfluss der Vorlage, in dem die Spieler durchstöbern, auswählen und Avatar-Kleidung und -Zubehör kaufen, sodass es von größter Bedeutung ist, dass niemand verwirrt ist, wie man mit der UI interagiert. Um die Spieler auf den Erfolg vorzubereiten, bietet die Vorlage sowohl visuelles als auch akustisches Feedback für jede UI-Interaktion.

Visuelles Feedback
Standardansicht
Im Fokus-Zustand
Beim Überfahren-Zustand
Ausgewählter Zustand

Um ein Beispiel dafür zu geben, wie Sie mehrere Formen von sensorischem Feedback konfigurieren können, bietet das Beispiel sowohl visuelles als auch akustisches Feedback, wann immer die Spieler die auf dem Bildschirm angezeigte Pfefferminz-Taste drücken. Wenn die Spieler nicht mit der Taste interagieren, sieht sie aus wie eine typische Pfefferminzsüßigkeit, aber wenn sie die Taste drücken, spielt das Beispiel:

  • Einen erfreulichen Jingle-Audiotrack ab.
  • Tönt die Taste mit einem türkisfarbenen Farbton.
  • Bewegt die Taste leicht nach unten auf dem Bildschirm.

Von hier aus können Sie diese Interaktion mit allen möglichen nützlichen Gameplay-Aktionen verbinden, wie z. B. das Öffnen eines Menüs oder den Kauf eines Artikels.

Standardansicht
Gedrückter Zustand

Um das einmalige UI-Interaktionsaudio im Beispiel Gingerbread House - Complete Audio zu reproduzieren:

  1. Navigieren Sie im Explorer-Fenster zu StarterGui2DAudioButton, dann:

    1. Fügen Sie ein AudioPlayer-Objekt hinzu, um eine Audioquelle zu erstellen.
    2. Fügen Sie ein AudioDeviceOutput-Objekt hinzu, um einen Lautsprecher zu erstellen, der im gesamten Spiel spielt.
    3. Fügen Sie ein Wire-Objekt hinzu, um den Stream vom Audio-Player zum Lautsprecher zu übertragen.
  2. Wählen Sie den AudioPlayer aus, und setzen Sie im Properties-Fenster AssetID auf rbxassetid://3422389728, um einen retro Jingle-Audiotrack abzuspielen.

  3. Wählen Sie den Wire aus, und setzen Sie im Properties-Fenster:

    1. Setzen Sie SourceInstance auf Ihren neuen AudioPlayer, um anzugeben, dass Sie möchten, dass der Draht Audio von diesem speziellen Audio-Player überträgt.
    2. Setzen Sie TargetInstance auf Ihr neues AudioDeviceOutput, um anzugeben, dass Sie möchten, dass der Draht Audio zu diesem speziellen Lautsprecher überträgt.
  4. Gehen Sie zurück zum Explorer-Fenster, fügen Sie ein LocalScript in 2DAudioButton ein, benennen Sie es in PlayAudioWhenPressed um, und fügen Sie den folgenden Code in das Skript ein:

    local TweenService = game:GetService("TweenService")
    local buttonGui = script.Parent
    local buttonImageButton = buttonGui.ButtonFrame.ButtonImageButton
    local buttonAudioPlayer = buttonGui.AudioPlayer
    local 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.IsPlaying
    local tween = buttonTweenByIsPressed[isPlaying]
    tween:Play()
    end
    onIsPlayingChanged()
    buttonAudioPlayer:GetPropertyChangedSignal("IsPlaying"):Connect(onIsPlayingChanged)
    buttonAudioPlayer.Ended:Connect(onIsPlayingChanged)
    buttonImageButton.Activated:Connect(function(_hit)
    buttonAudioPlayer:Play()
    end)

    Das Skript beginnt damit, Folgendes zu erhalten:

    • Den TweenService, damit es UI-Elemente animieren kann.
    • Das übergeordnete 2DAudioButton ScreenGui-Objekt des Skripts.
    • Die Pfefferminzsüßigkeit ImageButton.
    • Den relevanten Audio-Player mit Ihrem Jingle-Audiotrack.

    Das Skript definiert dann:

    • 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 true gedrückte Zustand bewegt die Taste leicht nach unten auf dem Bildschirm und färbt sie mit einem türkisfarbenen Farbton.
      • Der false ungedrückte Zustand bewegt die Taste zurück in ihre ursprüngliche Position auf dem Bildschirm und entfernt den vorherigen Farbton.

    Der Rest des Skripts ist der Ort, an dem der Großteil der Arbeit für das Auslösen von 2D-UI-Interaktionsfeedback erfolgt, also lassen Sie uns überprüfen, wie die Funktion onIsPlayingChanged und die Ereignis-Listener zusammen für den UI-Benutzerfluss arbeiten:

    1. buttonImageButton.Activated hört auf einen Spieler, der die Taste klickt, und ruft dann die Funktion Play() auf, um das zugehörige Audio vom Audio-Player abzuspielen. Dieser Prozess wechselt die AudioPlayer.IsPlaying-Eigenschaft von false auf true.
    2. buttonAudioPlayer:GetPropertyChangedSignal("IsPlaying") hört auf die Änderung der IsPlaying-Eigenschaft des Audio-Players und ruft dann die Funktion onIsPlayingChanged auf.
    3. Die Funktion onIsPlayingChanged verwendet diese Informationen, um das Tween auszulösen, das das visuelle Erscheinungsbild auf dem Bildschirm ändert.
    4. Um zu verhindern, dass der Spieler das Audio versehentlich neu startet, wenn er die Taste schnell hintereinander klickt, hört buttonAudioPlayer.Ended auf den Audio-Player, um zu beenden, bevor die Funktion onIsPlayingChanged erneut aufgerufen wird.

    Es ist wichtig zu beachten, dass das onIsPlayingChanged-Ereignis nur ausgelöst wird, wenn es von false auf true wechselt, was bedeutet, dass es nicht ausgelöst wird, wenn es von true auf false wechselt. Dies ist beabsichtigtes Verhalten aufgrund von Komplikationen mit der Zeit, die benötigt wird, um Eigenschaften vom Server zum Client zu replizieren. Aus diesem Grund wird das Ended`-Ereignis in diesem Beispiel bereitgestellt und gehört, um beide Fälle abzudecken.

  5. Testen Sie das Spiel, um den Jingle jedes Mal zu hören, wenn Sie die auf dem Bildschirm angezeigte Taste drücken.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.