{"id":15160266,"url":"https://github.com/kaitoartz/dropdownfps","last_synced_at":"2026-01-20T07:32:40.025Z","repository":{"id":269141740,"uuid":"848604239","full_name":"kaitoartz/DropdownFPS","owner":"kaitoartz","description":"Este repositorio contiene un script de C# para Unity (v2021.3.15f1 or +) que permite a los desarrolladores seleccionar y ajustar el framerate (FPS) de su juego.","archived":false,"fork":false,"pushed_at":"2024-08-28T05:56:52.000Z","size":87,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T20:33:48.895Z","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":null,"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-08-28T04:16:02.000Z","updated_at":"2024-11-18T23:38:45.000Z","dependencies_parsed_at":"2024-12-21T08:42:16.225Z","dependency_job_id":"759ffc44-bb68-4802-a3eb-c324655144ee","html_url":"https://github.com/kaitoartz/DropdownFPS","commit_stats":{"total_commits":27,"total_committers":1,"mean_commits":27.0,"dds":0.0,"last_synced_commit":"6e146c6f14c28dbb938a495f0d909839ed893930"},"previous_names":["kaitoartz/dropdownfps"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownFPS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownFPS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownFPS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitoartz%2FDropdownFPS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaitoartz","download_url":"https://codeload.github.com/kaitoartz/DropdownFPS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247712272,"owners_count":20983664,"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-26T22:43:29.475Z","updated_at":"2026-01-20T07:32:39.974Z","avatar_url":"https://github.com/kaitoartz.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FPS Selector for Unity\n\n👋 ¡Hola, desarrolladores de Unity! Soy KaitoArtz, y estoy emocionado de compartir este proyecto contigo.\n\n🚀 **¿Quieres estar al día con mis próximos proyectos de Unity?** ¡Sígueme en mis redes sociales!\n\n- [\u003cimg src=\"https://img.shields.io/badge/X-000000?style=for-the-badge\u0026logo=x\u0026logoColor=white\" /\u003e](https://x.com/K41t0M)\n- [\u003cimg src=\"https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge\u0026logo=instagram\u0026logoColor=white\" /\u003e](https://www.instagram.com/kaitoartzz/#)\n- [\u003cimg src=\"https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\" /\u003e](https://linkedin.com/in/TuPerfil)\n- [\u003cimg src=\"https://img.shields.io/badge/daily.dev-CE3DF3?style=for-the-badge\u0026logo=dailydotdev\u0026logoColor=white\" /\u003e](https://app.daily.dev/kaitoartz)\n\nNo te pierdas mis futuros proyectos que ayudarán a tus proyectos en Unity.\n\n---\n\nEste repositorio contiene un script de C# diseñado para Unity (versión 2021.3.15f1 o superior) que permite a los desarrolladores seleccionar y ajustar el framerate (FPS) de su juego de manera sencilla. Con este script, puedes ofrecer a los jugadores la opción de cambiar entre diferentes configuraciones de FPS a través de un menú desplegable en la UI.\n\n![FPS Selector Script en el Inspector](.image/Ingame.png)\n\n*Vista del script FPS Selector en game de Unity*\n\n## Características\n- **Selección de FPS**: Los jugadores pueden elegir entre 30, 60, 120 FPS o desbloquear el FPS.\n- **Integración Sencilla**: Fácil de integrar en cualquier proyecto de Unity.\n- **Persistencia de Configuración**: La selección de FPS se guarda y se aplica automáticamente en futuras sesiones del juego.\n\n## Instalación\n\n1. **Descargar el Script**: Clona este repositorio o descarga el archivo `FPSSelector.cs`.\n2. **Importar a Unity**: Coloca el archivo `FPSSelector.cs` en la carpeta `Scripts` de tu proyecto de Unity.\n3. **Agregar el Script a un GameObject**:\n   - Crea un nuevo `GameObject` vacío en tu escena o utiliza uno existente.\n   - Arrastra el script `FPSSelector` al `GameObject`.\n4. **Configurar el Dropdown en la UI**:\n   - En tu escena, añade un componente `TMP_Dropdown` a la UI.\n   - En el inspector, asigna el `TMP_Dropdown` al campo `fpsDropdown` en el script `FPSSelector`.\n\n## Configuración en el Inspector\n\nPara que el script funcione correctamente, asegúrate de configurar los siguientes valores en el Inspector:\n\n![Configuración del FPS Selector en el Inspector](.image/Dropdownvalues.png)\n\n*Configuración necesaria para el FPS Selector en el Inspector de Unity*\n\n1. **FPS Dropdown**: Asigna aquí tu TMP_Dropdown de la UI.\n2. **Selected FPS**: Este valor se actualizará automáticamente según la selección del usuario.\n3. **Default FPS**: Establece el FPS por defecto (por ejemplo, 60).\n4. **Save Key**: Nombre de la clave para guardar la configuración de FPS (por ejemplo, \"SelectedFPS\").\n\n## Uso\n\n1. **Configuración Inicial**:\n   - Al iniciar el juego, el script cargará la última configuración de FPS seleccionada.\n   - El dropdown se ajustará automáticamente al valor correspondiente.\n\n2. **Cambio de FPS**:\n   - Los jugadores pueden seleccionar un valor diferente en el dropdown.\n   - Para aplicar la nueva configuración de FPS, llama al método `ApplyFPSSetting()` desde el script.\n\n## Personalización y Uso Avanzado\n\n### Modificar las opciones de FPS disponibles\n\nPuedes cambiar las opciones de FPS disponibles modificando los métodos `GetFPSFromDropdownIndex` y `GetDropdownIndexFromFPS`. Por ejemplo, si quieres añadir una opción de 90 FPS:\n\n```csharp\npublic int GetFPSFromDropdownIndex(int index)\n{\n    switch (index)\n    {\n        case 0: return 30;\n        case 1: return 60;\n        case 2: return 90;  // Nueva opción de 90 FPS\n        case 3: return 120;\n        case 4: return 0; // Unlock FPS\n        default: return 60;\n    }\n}\n\npublic int GetDropdownIndexFromFPS(int fps)\n{\n    switch (fps)\n    {\n        case 30: return 0;\n        case 60: return 1;\n        case 90: return 2;  // Nueva opción de 90 FPS\n        case 120: return 3;\n        case 0: return 4; // Unlock FPS\n        default: return 1; // Default to 60 FPS\n    }\n}\n```\n\nRecuerda actualizar también las opciones en tu `TMP_Dropdown` en la UI de Unity para que coincidan con estos cambios.\n\n### Aplicar FPS automáticamente al cambiar el dropdown\n\nSi quieres que el FPS se aplique inmediatamente al cambiar el dropdown, puedes modificar el método `DropdownValueChanged`:\n\n```csharp\npublic void DropdownValueChanged(TMP_Dropdown change)\n{\n    selectedFPS = GetFPSFromDropdownIndex(change.value);\n    ApplyFPSSetting(); // Aplica el FPS inmediatamente\n}\n```\n\n### Añadir un evento de cambio de FPS\n\nSi quieres notificar a otras partes de tu juego cuando cambia el FPS, puedes añadir un evento:\n\n```csharp\npublic delegate void FPSChangedDelegate(int newFPS);\npublic event FPSChangedDelegate OnFPSChanged;\n\npublic void ApplyFPSSetting()\n{\n    SetFPS(selectedFPS);\n    OnFPSChanged?.Invoke(selectedFPS); // Invoca el evento\n}\n```\n\nLuego, en otros scripts, puedes suscribirte a este evento:\n\n```csharp\nvoid Start()\n{\n    FPSSelector fpsSelector = FindObjectOfType\u003cFPSSelector\u003e();\n    fpsSelector.OnFPSChanged += HandleFPSChanged;\n}\n\nvoid HandleFPSChanged(int newFPS)\n{\n    Debug.Log($\"FPS changed to: {newFPS}\");\n    // Realiza acciones basadas en el nuevo FPS\n}\n```\n\n### Guardar y cargar configuraciones personalizadas\n\nPuedes extender la funcionalidad para guardar configuraciones personalizadas:\n\n```csharp\npublic void SaveCustomFPSSetting(string settingName, int fps)\n{\n    PlayerPrefs.SetInt($\"CustomFPS_{settingName}\", fps);\n}\n\npublic int LoadCustomFPSSetting(string settingName)\n{\n    return PlayerPrefs.GetInt($\"CustomFPS_{settingName}\", 60); // Default to 60 if not found\n}\n```\n\nEstas modificaciones te permiten adaptar el script FPSSelector a las necesidades específicas de tu proyecto.\n\n## Requisitos\n\n- Unity 2021.3.15f1 o superior.\n- `TextMeshPro` debe estar instalado en tu proyecto para usar `TMP_Dropdown`.\n\n## Contribuciones\n\n¡Las contribuciones son bienvenidas! Si tienes mejoras, ideas, o encuentras un bug, siéntete libre de abrir un issue o enviar un pull request.\n\n## Licencia\n\nEste proyecto está licenciado bajo la Licencia MIT. Consulta el archivo [Licencia](LICENSE.md) para más detalles.\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaitoartz%2Fdropdownfps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaitoartz%2Fdropdownfps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaitoartz%2Fdropdownfps/lists"}