https://github.com/kaitoartz/dropdownspeakermode
Una herramienta eficiente y fácil de integrar para seleccionar y gestionar modos de altavoz en proyectos Unity, compatible con múltiples plataformas.
https://github.com/kaitoartz/dropdownspeakermode
canvas csharp speaker-manager ui unity
Last synced: over 1 year ago
JSON representation
Una herramienta eficiente y fácil de integrar para seleccionar y gestionar modos de altavoz en proyectos Unity, compatible con múltiples plataformas.
- Host: GitHub
- URL: https://github.com/kaitoartz/dropdownspeakermode
- Owner: kaitoartz
- License: mit
- Created: 2024-09-16T04:28:31.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-16T07:26:23.000Z (almost 2 years ago)
- Last Synced: 2025-02-04T21:23:52.567Z (over 1 year ago)
- Topics: canvas, csharp, speaker-manager, ui, unity
- Homepage:
- Size: 20.7 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# 🔊 Unity Speaker Mode Selector
[](https://unity3d.com/get-unity/download)
[](https://github.com/KaitoOwO/DropdownSpeakerMode/blob/main/SpeakerModeTool.unitypackage
)
[](LICENSE.md)
[](#)
[](CONTRIBUTING.md)
[](https://x.com/kaitoartzz)
> Una herramienta eficiente y fácil de integrar para seleccionar y gestionar modos de altavoz en proyectos Unity, compatible con múltiples plataformas.
---
✨🌷 ¡Hola, pequeños devs!💖 Soy **KaitoArtz**, y estoy emocionado de compartir este proyecto contigo.
Esta guía te proporcionará instrucciones detalladas para integrar, personalizar y modificar la herramienta de selección de modo de speaker en un proyecto de Unity. Este package fue desarrollado en Unity **2021.3.15f1** y contiene varias escenas preconfiguradas, scripts y assets necesarios para su funcionamiento.
GUÍA DE USO / DOCS:
[](https://docs.google.com/document/d/1fNBMMr-iCRFTAYUThmCsrDRbVIwLbtT8DEUj7X-9amA/edit?usp=sharing)

---
## 📖 Tabla de Contenidos
- [✨ Características](#-características)
- [🔧 Requisitos Previos](#-requisitos-previos)
- [📦 Instalación](#-instalación)
- [⚙️ Configuración](#️-configuración)
- [🚀 Uso](#-uso)
- [🎮 Pruebas](#-pruebas)
- [📚 Documentación Detallada](#-documentación-detallada)
- [🤝 Contribuciones](#-contribuciones)
- [📄 Licencia](#-licencia)
- [📞 Soporte](#-soporte)
---
## ✨ Características
- **Compatibilidad Multiplataforma**: Funciona en Windows, macOS, Linux, Xbox y Playstation.
- **Selección Dinámica**: Permite cambiar entre diferentes modos de altavoz en tiempo real.
- **Interfaz de Usuario Intuitiva**: Utiliza un dropdown para una selección fácil y rápida.
- **Persistencia de Configuración**: Guarda y carga automáticamente la última configuración de audio seleccionada.
- **Transiciones Suaves**: Implementa cambios de modo de altavoz con transiciones graduales para una mejor experiencia de usuario.
- **Fácil Integración**: Diseñado para ser incorporado rápidamente en proyectos Unity existentes.
> [!TIP]
> **¿Sabías que...?** Esta herramienta también puede adaptarse para agregar mas modos de parlante.
---
## 🛠 Requisitos Previos
- Unity versión 2021.3.15f1 o superior.
- Conocimientos básicos de Unity y C#.
- Familiaridad con el sistema de audio de Unity y AudioMixer.
- Manejo de Canvas de Unity.
---
## 📦 Instalación
### Requisitos Previos
- **Unity** versión **2021.3.15f1** o superior.
- Conocimiento básico de la interfaz de Unity y manejo de scripts.
- Package: [](https://github.com/KaitoOwO/DropdownSpeakerMode/blob/main/SpeakerModeTool.unitypackage
)
### Pasos de Instalación
1. **Importar el Package**
- Abre tu proyecto Unity (2021.3.15f1 o superior).
- Ve a `Assets > Import Package > Custom Package`.
- Selecciona el package de la herramienta de selección de speaker descargado.
- Contenido:

2. **Configuración de Escenas**
- Abre `File > Build Settings`.
- Asegúrate de que la escena "LoadInitialization" sea la primera en la lista.
- Ordena las demás escenas según las necesidades de tu proyecto.

3. **Verificación de Componentes**
- Revisa que los siguientes scripts estén presentes en tu proyecto:
- `AudioInitializer`
- `AudioSettingsManager`
- `AudioSettingsDropdown`
- `SceneManager`
- `ChangeSceneTimer`

> [!NOTE]
> Puedes testear y probar las escenas para ver en tiempo real como funcionan los scripts y sus funcionalidades.
---
## ⚙️ Configuración
### AudioSettingsManager
Este componente gestiona los modos de altavoz disponibles y las transiciones entre ellos.
```csharp
public class AudioSettingsManager : MonoBehaviour
{
public static AudioSettingsManager Instance { get; private set; }
[SerializeField] private AudioMixer audioMixer;
public AudioSpeakerMode[] speakerModes = {
AudioSpeakerMode.Mono,
AudioSpeakerMode.Stereo,
AudioSpeakerMode.Quad,
AudioSpeakerMode.Mode5point1,
};
// ... (resto del código)
}
```
### AudioSettingsDropdown
Maneja la interfaz de usuario para la selección de modos de altavoz.
```csharp
public class AudioSettingsDropdown : MonoBehaviour
{
[SerializeField] private TMP_Dropdown speakerModeDropdown;
[SerializeField] private GameObject warningPanel;
[SerializeField] private Button applyButton;
[SerializeField] private Button cancelButton;
// ... (resto del código)
}
```
> [!WARNING]
> Asegúrate de estar utilizando la version actualizada del `TextMeshPro` de Unity.
### Configuración del Inspector
- **Dropdown**: Asigna el prefab `SpeakerDropdown` al script `AudioSettingsDropdown`.
- **Warning Panel**: Asigna el prefab `WarningPanel` que se mostrará cuando se detecten cambios en las pantallas.
- **Continue Button**: `Botón` para confirmar y aplicar cambios tras detectar un nuevo cambio de parlante.
- **Cancel Button**: `Botón` para cancelar y no aplicar los cambios.
---
## 🚀 Uso
1. **Inicialización**
- La escena "LoadInitialization" se carga primero, inicializando la configuración de audio.
- Después de un breve retraso, se carga la escena principal.
2. **Selección de Modo de Altavoz**
- En la escena principal, utiliza el dropdown para seleccionar el modo de altavoz deseado.
- Los cambios se aplican inmediatamente con una transición suave.
3. **Manejo de Advertencias**
- Si se requiere un reinicio para aplicar los cambios, se mostrará un panel de advertencia.
- Utiliza los botones "Apply" o "Cancel" según sea necesario.
4. **Navegación entre Escenas**
- Utiliza el `SceneManager` para moverte entre diferentes escenas manteniendo la configuración de audio.
> [!TIP]
> Para manejar el buffer de audio de manera óptima cuando se cambian modos de speaker, puedes modificar el `AudioSettingsManager` para pausar y reanudar el audio de forma más controlada, evitando problemas de corte abrupto.
---
## 🎮 Pruebas
### **Cambio de speaker en tiempo real**
### **MainScene:**
Una vez que estemos en game. Cargará la escena **LoadInitialization** y pasará a **MainScene**.

Si cambiamos el tipo de speaker, aparecerá el panel de advertencia.
#### **Panel de Advertencia:**

Si le damos a **Aplicar**, se pausara el audio, pero luego volverá a reanudar normalmente (Esto es como feedback de que el cambio se realizó correctamente) y se vera asi el **AudioMixer**:
#### **Cambios en AudioMixer:**


### **Comprobar cambios:**
Una vez que queramos cambiar de escena, nos fijamos que el **AudioMixer** sigue con el mismo valor aplicado.
### **Escena de nivel:**

Vemos que la escena de Nivel, es como cuando le damos Jugar a nuestro videojuego. Como ven, el audiomixer sigue con el mismo tipo de parlante.
### **Escena de pausa:**
Ahora como también estuvieramos testeando nuestro videojuego. Si vamos a la escena de pausa o vamos a una escena que también contenga un panel de opciones con el **Dropdown** de cambiar el parlante (**Speaker**), también guardará los valores que teníamos en la escena principal.

### **Cerrar y volver a abrir el juego:**
Si cerramos nuestro videojuego, y luego lo volviéramos a abrir, nuestra escena de **LoadInitialization**, hará todo el trabajo para cargar los datos del playerprefb que guardamos con el valor del tipo de parlante.

Esperamos un momento y…

---
## 📚 Documentación Detallada
### Adaptación a Otros Proyectos
#### Modificar Modos de Altavoz Disponibles
En `AudioSettingsManager`, ajusta el array `speakerModes`:
```csharp
public AudioSpeakerMode[] speakerModes = {
AudioSpeakerMode.Mono,
AudioSpeakerMode.Stereo,
AudioSpeakerMode.Quad,
AudioSpeakerMode.Mode5point1,
AudioSpeakerMode.Mode7point1 // Añadir si es necesario
};
```
#### Personalizar la Interfaz de Usuario
En `AudioSettingsDropdown`, modifica `GetDisplayNameForSpeakerMode`:
```csharp
private string GetDisplayNameForSpeakerMode(AudioSpeakerMode mode)
{
switch (mode)
{
case AudioSpeakerMode.Stereo: return "Estéreo";
case AudioSpeakerMode.Quad: return "Cuadrafónico";
case AudioSpeakerMode.Mode5point1: return "Surround 5.1";
// Añadir más casos según sea necesario
default: return mode.ToString();
}
}
```
#### Ajustar el SceneManager
Personaliza el `SceneManager` para manejar la navegación entre escenas según tu estructura de proyecto:
```csharp
public class SceneManager : MonoBehaviour
{
[SerializeField] public string mainSceneName = "MainScene";
[SerializeField] public string[] levelNames;
public void LoadNextLevel(int currentLevel)
{
if (currentLevel < levelNames.Length - 1)
{
UnityEngine.SceneManagement.SceneManager.LoadScene(levelNames[currentLevel + 1]);
}
else
{
Debug.Log("No hay más niveles disponibles");
}
}
// Añadir más métodos según sea necesario
}
```
> [!NOTE]
> Consulta el código fuente completo para más detalles y comentarios que te ayudarán a entender y modificar el comportamiento según tus necesidades.
## 🤝 Contribuciones
¡Las contribuciones son bienvenidas! Si deseas mejorar este proyecto, sigue estos pasos:
1. Haz un Fork del repositorio.
2. Crea una rama nueva: `git checkout -b feature/nueva-funcionalidad`.
3. Realiza tus cambios y haz commit: `git commit -m 'Agrega nueva funcionalidad'`.
4. Haz push a la rama: `git push origin feature/nueva-funcionalidad`.
5. Abre un Pull Request.
> [!TIP]
> Asegúrate de seguir las convenciones de codificación y agregar comentarios claros para facilitar la revisión.
---
## 📄 Licencia
Este proyecto está licenciado bajo la licencia MIT. Esto significa que eres libre de usar, modificar y distribuir este software de acuerdo con los términos de la licencia.
Consulta el archivo [Licencia](LICENSE.md) para más detalles.
---
## 🔰 Políticas de Privacidad
Este proyecto no recopila información personal ni técnica de los usuarios. Para más detalles, consulta nuestras [Políticas de Privacidad](SECURITY.md).
---
## 🔗 Enlaces de Interés
- **Portfolio Personal**: [](https://x.com/kaitoartzz)
- **Itch.io / Videojuegos Publicados**: [](https://kaitoartz.itch.io)
- **Otros Proyectos en Unity**: [](https://github.com/KaitoOwO)
---
## 📞 Soporte
Si tienes preguntas, problemas o sugerencias, no dudes en contactarme:
- **Email**: kaitoartz.info@gmail.com
- **Twitter**: [@kaitoartzz](https://twitter.com/K41t0M)
- **Discord**: kaitoowo
Espero que les guste esta herramienta que la cree y programe para un proyecto universitario. La estuve puliendo y trabajando para que se pudiera integrar fácil en cualquier proyecto y para compartirlo con ustedes! Si gustan, dejen una estrella, comenten, o si encuentran alguna idea para mejorar, no olviden dejar su [](https://github.com/KaitoOwO/DropdownResolution/issues) y con gusto mejoraremos juntos esta herramienta. ✨❤️
---
Desarrollado con ❤️ por *KaitoArtz*