# Importing Audio into Custom Script

### Importing Audio into Custom Script

#### Overview

The **LanguageSystem PRO** supports language-specific audio clips, allowing you to play different audio files based on the current language setting. This system is managed by the **LanguageAudioManager**, which uses audio IDs to retrieve the appropriate audio clip for the selected language.

In this section, you will learn how to:

* Retrieve and play an audio clip based on the selected language using its audio ID.
* Implement the **CustomAudioImport** component to integrate this feature into your custom scripts.

#### Retrieving Language-Specific Audio Clips

To access an audio clip based on the current language, use the **LanguageAudioManager**. It manages all audio clips by associating them with an `audioID` and a list of language-specific `AudioClip` objects.

**Example: How to Retrieve and Play an Audio Clip**

Here is a basic example of how to retrieve and play an audio clip using the **LanguageAudioManager**.

```csharp
public class PlayLocalizedAudio : MonoBehaviour
{
    public string audioID; // Unique audio ID for this sound
    public AudioSource audioSource; // The AudioSource that will play the audio

    private void Start()
    {
        // Get the audio clip based on the current language and audioID
        AudioClip clip = LanguageAudioManager.Instance.GetAudioByID(audioID);

        // Check if the clip exists, then play it
        if (clip != null)
        {
            audioSource.clip = clip;
            audioSource.Play();
        }
        else
        {
            Debug.LogError($"Audio clip for '{audioID}' not found.");
        }
    }
}
```

In this example:

* The `audioID` is used to find the appropriate audio clip for the current language.
* The audio is played via the provided `AudioSource` on the GameObject.

***

#### CustomAudioImport Example

To make this process easier, you can use the **CustomAudioImport** component, which serves as a practical implementation of the **LanguageAudioManager** in a reusable format. This component automatically retrieves and plays the correct audio clip for the current language based on a given `audioID`.

**How to Use CustomAudioImport**

Follow these steps to integrate **CustomAudioImport**:

1. **Attach CustomAudioImport**: Add the **CustomAudioImport** component to any GameObject with an `AudioSource` component. If it doesn't have an `AudioSource`, you'll need to add one.
2. **Set the Audio ID**: In the **CustomAudioImport** component, set the `audioID` field to the desired audio ID (e.g., "greeting", "farewell").
3. **Automatic Playback**: Once set up, **CustomAudioImport** will automatically retrieve the appropriate audio clip for the current language when the GameObject is activated.

**CustomAudioImport Script Example**

```csharp
csharpCopiar códigousing UnityEngine;

public class CustomAudioImport : MonoBehaviour
{
    public string audioID; // The ID of the audio to play
    private AudioSource audioSource;

    private void Awake()
    {
        audioSource = GetComponent<AudioSource>();

        // Automatically play the audio when the component starts
        PlayAudioManually();
    }

    /// <summary>
    /// Manually plays the audio associated with the current language and audio ID.
    /// </summary>
    public void PlayAudioManually()
    {
        if (audioSource == null)
        {
            Debug.LogError("No AudioSource found on this GameObject.");
            return;
        }

        AudioClip clip = LanguageAudioManager.Instance.GetAudioByID(audioID);
        if (clip != null)
        {
            audioSource.clip = clip;
            audioSource.Play();
        }
        else
        {
            Debug.LogError($"Audio clip for '{audioID}' not found.");
        }
    }
}
```

#### Customizing Audio for Each Language

Using **CustomAudioImport** or manual scripting, you can customize audio playback for each language. This flexibility allows for localized voiceovers, sound effects, or notifications tailored to your audience’s language preference.

#### Summary of Key Functions in LanguageAudioManager

* **GetAudioByID(audioID)**: Retrieves the `AudioClip` for the current language and the given `audioID`.
* **PlayAudioByID(audioID, AudioSource)**: Plays the audio clip for the `audioID` using the provided `AudioSource`.
* **AudioExists(audioID)**: Checks if an audio clip exists for the given `audioID` in the current language.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bizachi-dev.gitbook.io/languagesystem-pro/getting-started/publish-your-docs-7.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
