{"id":15292731,"url":"https://github.com/kaitoartz/dropdownresolution","last_synced_at":"2026-05-09T00:38:42.497Z","repository":{"id":265967746,"uuid":"851428861","full_name":"kaitoartz/DropdownResolution","owner":"kaitoartz","description":"Este repositorio contiene un script de C# para Unity (v2021.3.15f1 or +) que permite a los desarrolladores seleccionar y ajustar la resolución de su juego.","archived":false,"fork":false,"pushed_at":"2024-09-03T07:04:14.000Z","size":177,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T11:16:14.693Z","etag":null,"topics":["csharp","ui","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaitoartz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-03T04:49:47.000Z","updated_at":"2024-11-18T23:38:29.000Z","dependencies_parsed_at":"2024-12-02T02:17:02.836Z","dependency_job_id":null,"html_url":"https://github.com/kaitoartz/DropdownResolution","commit_stats":null,"previous_names":["kaitoartz/dropdownresolution"],"tags_count":0,"template":true,"template_full_name":"kaitoartz/DropdownFPS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownResolution","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownResolution/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownResolution/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownResolution/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaitoartz","download_url":"https://codeload.github.com/kaitoartz/DropdownResolution/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245258213,"owners_count":20585977,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","ui","unity"],"created_at":"2024-09-30T16:26:16.955Z","updated_at":"2026-05-09T00:38:42.448Z","avatar_url":"https://github.com/kaitoartz.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# 🎛️ Resolution Selector for Unity\n\n[![Unity Version](https://img.shields.io/badge/Unity-2021.3.15f1%2B-blue.svg)](https://unity3d.com/get-unity/download)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE.md)\n[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux%20%7C%20SteamDeck-lightgrey)](#)\n[![Contributions](https://img.shields.io/badge/Contributions-Welcome-orange.svg)](CONTRIBUTING.md)\n[![Twitter Follow](https://img.shields.io/twitter/follow/K41t0M?style=social)](https://twitter.com/K41t0M)\n\n\u003e Un sencillo y eficiente selector de resolución para tus proyectos de Unity, compatible con múltiples plataformas y fácil de integrar.\n\n---\n✨🌷 ¡Hola, pequeños devs!💖 Soy **KaitoArtz**, y estoy emocionado de compartir este proyecto contigo.\n\nEste repositorio contiene un script de C# diseñado para Unity (versión 2021.3.15f1 o superior) que permite a los desarrolladores agregar un selector de resolución a través de un menú desplegable (`Dropdown`) en la UI de Unity. Este script es ideal para proyectos que necesitan adaptarse a diferentes resoluciones de pantalla, incluyendo opciones específicas para Steam Deck y plataformas de escritorio.\n\n![Resolution Selector en el game](https://github.com/user-attachments/assets/601be0a5-e0c8-4470-a8c2-3491fa1a751e)\n\n---\n\n## 📖 Tabla de Contenidos\n\n- [✨ Características](#-características)\n- [📦 Instalación](#-instalación)\n- [⚙️ Configuración](#️-configuración)\n- [🚀 Uso](#-uso)\n- [🖼️ Ejemplos Visuales](#️-ejemplos-visuales)\n- [📚 Documentación Detallada](#-documentación-detallada)\n- [🤝 Contribuciones](#-contribuciones)\n- [📄 Licencia](#-licencia)\n- [🔗 Enlaces de Interés](#-enlaces-de-interés)\n- [📞 Soporte](#-soporte)\n\n---\n\n## ✨ Características\n\n- **Compatibilidad Multiplataforma**: Funciona perfectamente en Windows, macOS, Linux y Steam Deck.\n  \n- **Detección Automática**: Detecta y actualiza automáticamente las resoluciones disponibles según los monitores conectados.\n  \n- **Interfaz de Usuario Amigable**: Integra un Dropdown intuitivo para que los usuarios seleccionen la resolución deseada.\n  \n- **Persistencia de Configuración**: Guarda y carga automáticamente la última resolución seleccionada.\n  \n- **Personalización Fácil**: Añade o elimina resoluciones soportadas según tus necesidades.\n  \n- **Manejo de Eventos**: Incluye eventos para responder a cambios de resolución en tiempo real.\n  \n\u003e [!TIP]\n\u003e **¿Sabías que...?** Este script también puede adaptarse para cambiar entre modos de pantalla completa y ventana con facilidad.\n\n---\n\n## 📦 Instalación\n\n### Requisitos Previos\n\n- **Unity** versión **2021.3.15f1** o superior.\n- Conocimiento básico de la interfaz de Unity y manejo de scripts.\n\n### Pasos de Instalación\n\n1. **Clona el Repositorio**\n   \n```bash\ngit clone https://github.com/KaitoOwO/DropdownResolution.git\n```\n\n2. **Importa el Script a tu Proyecto**\n\nCopia el archivo `ResolutionSelector.cs` en la carpeta Scripts de tu proyecto de Unity.\n\n3. **Añade el Componente a un GameObject**\n\nCrea un `GameObject` vacío en tu escena o utiliza uno existente.\nArrastra y suelta el script `ResolutionSelector.cs` sobre el `GameObject`.\n\n4. **Configura la UI**\n\nAñade un `Dropdown (legacy)` a tu Canvas.\nCrea un `Panel` de Advertencia opcional para notificar cambios en la pantalla.\nAsigna los elementos correspondientes en el Inspector del `ResolutionSelector`.\n\n\u003e [!NOTE]\n\u003e Si utilizas el nuevo sistema de UI de Unity, puedes adaptar el script para trabajar con el componente `TMP_Dropdown` de `TextMeshPro`.\n\n---\n\n## ⚙️ Configuración\n\n### Ajuste de Resoluciones Soportadas\n\nEl script viene con listas predefinidas de resoluciones para diferentes plataformas. Puedes seleccionar y modificar estas listas según tus necesidades.\n\n#### Resoluciones para Steam Deck\n\n```csharp\nprivate Resolution[] supportedResolutions = new Resolution[] {\n    new Resolution() { width = 640, height = 480 },  //(4:3)\n    new Resolution() { width = 960, height = 720 },  //(4:3)\n    new Resolution() { width = 1280, height = 720 },\n    new Resolution() { width = 1066, height = 800 }, //(4:3)\n    new Resolution() { width = 1280, height = 800 },\n    new Resolution() { width = 1440, height = 1080 }, //(4:3)\n    new Resolution() { width = 1920, height = 1080 }\n};\n```\n\n#### Resoluciones para Escritorio (Windows, macOS, Linux)\n\n```csharp\nprivate Resolution[] supportedResolutions = new Resolution[] {\n    new Resolution() { width = 640, height = 480 },\n    new Resolution() { width = 960, height = 540 },\n    new Resolution() { width = 960, height = 720 },\n    new Resolution() { width = 1280, height = 720 },\n    new Resolution() { width = 1366, height = 768 },\n    new Resolution() { width = 1066, height = 800 },\n    new Resolution() { width = 1280, height = 800 },\n    new Resolution() { width = 1440, height = 900 },\n    new Resolution() { width = 1440, height = 1080 },\n    new Resolution() { width = 1920, height = 1080 },\n    new Resolution() { width = 2560, height = 1080 },\n    new Resolution() { width = 2880, height = 2160 },\n    new Resolution() { width = 3840, height = 2160 }\n};\n```\n\n\u003e [!WARNING]\n\u003e Asegúrate de que las resoluciones soportadas sean compatibles con los monitores objetivo para evitar problemas de visualización.\n\n### Configuración del Inspector\n\n- **Dropdown**: Asigna el componente `Dropdown` de tu UI.\n- **Warning Panel**: Asigna un `panel` que se mostrará cuando se detecten cambios en las pantallas.\n- **Continue Button**: `Botón` para confirmar y aplicar cambios tras detectar una nueva pantalla.\n- **Resolution Text**: `Texto` opcional para mostrar la resolución actual al usuario.\n\n---\n\n## 🚀 Uso\n\n### Inicialización Automática\n\n- Al iniciar el juego, el script detecta la resolución óptima y la establece automáticamente.\n- Carga la última resolución seleccionada si existe una guardada.\n\n### Selección Manual de Resolución\n\n- El usuario puede seleccionar una resolución diferente desde el Dropdown en cualquier momento.\n- El cambio se aplica inmediatamente y se guarda para futuras sesiones.\n\n### Detección de Cambios de Pantalla\n\n- Si se conecta o desconecta un monitor, el script muestra el Warning Panel y actualiza las opciones disponibles.\n- Al presionar el `Continue Button`, se aplica la mejor resolución disponible.\n\n\u003e [!TIP]\n\u003e Puedes personalizar el intervalo de detección de cambios de pantalla modificando el valor en la corrutina `CheckForDisplayChanges()` dentro del script.\n\n---\n\n## 🖼️ Ejemplos Visuales\n\n### Demo en Acción\n\nDemostración del selector de resolución en el inspector.\n\n![Resolution Selector Script en el Inspector](.image/Inspector.png)\n\n![Configuración del Resolution Selector en el Inspector](.image/DropdownResolutionValues.png)\n\n### Interacción con el Usuario\n\nEl usuario seleccionando diferentes resoluciones desde el Dropdown.\n\n![DropdownResolution](https://github.com/user-attachments/assets/bb217ef8-7a1d-4962-ae5a-ae70ad10466b)\n\n---\n\n## 📚 Documentación Detallada\n\n### Métodos Principales\n\n- **Start()**: Inicializa el selector y configura las opciones disponibles.\n  \n- **OnDropdownValueChanged(int index)**: Maneja el cambio de selección en el Dropdown y aplica la nueva resolución.\n  \n- **CheckForDisplayChanges()**: Corrutina que verifica periódicamente cambios en las pantallas conectadas.\n  \n- **SetResolution(int width, int height)**: Aplica la resolución especificada y ajusta la pantalla en consecuencia.\n\n### Personalización Avanzada\n\nPuedes extender la funcionalidad del script añadiendo métodos y eventos personalizados. Por ejemplo:\n\n#### Agregar Soporte para Pantalla Completa\n\n```csharp\npublic void ToggleFullScreen(bool isFullScreen)\n{\n    Screen.fullScreen = isFullScreen;\n}\n```\n\n#### Responder a Eventos de Cambio de Resolución\n\n```csharp\npublic event Action\u003cResolution\u003e OnResolutionChanged;\n\nprivate void SetResolution(int width, int height)\n{\n    Screen.SetResolution(width, height, Screen.fullScreen);\n    OnResolutionChanged?.Invoke(new Resolution() { width = width, height = height });\n}\n```\n\n\u003e [!NOTE]\n\u003e 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.\n\n---\n\n## 🤝 Contribuciones\n\n¡Las contribuciones son bienvenidas! Si deseas mejorar este proyecto, sigue estos pasos:\n\n1. Haz un Fork del repositorio.\n2. Crea una rama nueva: `git checkout -b feature/nueva-funcionalidad`.\n3. Realiza tus cambios y haz commit: `git commit -m 'Agrega nueva funcionalidad'`.\n4. Haz push a la rama: `git push origin feature/nueva-funcionalidad`.\n5. Abre un Pull Request.\n\n\u003e [!TIP]\n\u003e Asegúrate de seguir las convenciones de codificación y agregar comentarios claros para facilitar la revisión.\n\n---\n\n## 📄 Licencia\n\nEste 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.\nConsulta el archivo [Licencia](LICENSE.md) para más detalles.\n\n---\n\n## 🔰 Políticas de Privacidad\n\nEste proyecto no recopila información personal ni técnica de los usuarios. Para más detalles, consulta nuestras [Políticas de Privacidad](SECURITY.md).\n\n---\n\n## 🔗 Enlaces de Interés\n\n- **Portfolio Personal**: [![Twitter Follow](https://img.shields.io/twitter/follow/K41t0M?style=social)](https://twitter.com/K41t0M)\n- **Itch.io / Videojuegos Publicados**: [![Itch.io](https://img.shields.io/badge/KaitoArtz-%23FF0B34.svg?logo=Itch.io\u0026logoColor=white)](https://kaitoartz.itch.io)\n- **Otros Proyectos en Unity**: [![GitHub](https://img.shields.io/badge/KaitoArtz-%23121011.svg?logo=github\u0026logoColor=white)](https://github.com/KaitoOwO)\n\n---\n\n## 📞 Soporte\n\nSi tienes preguntas, problemas o sugerencias, no dudes en contactarme:\n\n- **Email**: kaitoartz.info@gmail.com\n- **Twitter**: [@K41t0M](https://twitter.com/K41t0M)\n- **Discord**: kaitoowo\n\nTambién puedes abrir un [![GitHub Pages](https://img.shields.io/badge/%20Issues-121013?logo=github\u0026logoColor=white)](https://github.com/KaitoOwO/DropdownResolution/issues) en este repositorio, y te responderé lo antes posible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaitoartz%2Fdropdownresolution","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaitoartz%2Fdropdownresolution","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaitoartz%2Fdropdownresolution/lists"}