Ключевые слова для поиска: - спящий режим экрана - ### Контекст У меня есть Unity-игра, запущенная на Android. Когда она долго работает, экран гаснет (входит в спящий режим). Я хочу, чтобы экран не гас, пока игра запущена. Подскажите, какую настройку в Unity нужно изменить или какой код добавить, чтобы экран оставался включённым всё время? ### Решение На Android устройствах по умолчанию экран начинает тускнеть и затем отключается после определённого времени без активности пользователя. В контексте игры это нежелательно: если игрок не прикасается к экрану (например, управление происходит акселерометром или персонаж стоит без действий), система может погасить экран и перевести устройство в спящий режим. Это прерывает игровой процесс и раздражает пользователя. Поэтому **необходимо удерживать экран включённым всё время работы игры**, чтобы он не гас и не блокировался автоматически. ## Решение средствами Unity: свойство `Screen.sleepTimeout` Unity предоставляет встроенное решение для управления автоотключением экрана – статическое свойство `Screen.sleepTimeout`. С помощью него можно запретить уход экрана в сон, не прибегая к Android SDK напрямую. Достаточно один раз установить ему специальное значение `SleepTimeout.NeverSleep` при запуске игры. Это **отключит таймер авто-выключения** экрана на всём протяжении работы приложения. Проще говоря, пока игра активна, экран будет оставаться включённым бесконечно долго, даже если пользователь не прикасается к устройству. **Пример реализации в Unity (C#):** создайте скрипт и вызовите установку таймаута в методе инициализации, например в `Awake()` или `Start()` любого объекта, существующего на всех сценах игры (например, GameManager). Код будет таким: ```csharp using UnityEngine; public class KeepScreenOn : MonoBehaviour { void Awake() { // Отключаем авто-отключение/затухание экрана Screen.sleepTimeout = SleepTimeout.NeverSleep; } void OnApplicationPause(bool paused) { // Если игра свернута или приостановлена, возвращаем настройку по умолчанию Screen.sleepTimeout = paused ? SleepTimeout.SystemSetting : SleepTimeout.NeverSleep; } } ``` В приведённом коде свойство `Screen.sleepTimeout` устанавливается в значение `SleepTimeout.NeverSleep` – это специальная константа Unity, означающая _«никогда не гасить экран»_. Таким образом, **экран не будет ни тускнеть, ни отключаться** всё время, пока приложение активно. В методе `OnApplicationPause` показано, как можно восстанавливать системные настройки (`SleepTimeout.SystemSetting`) при сворачивании игры, чтобы не препятствовать сну экрана вне игры. Хотя сбрасывать значение не обязательно (при закрытии приложения система сама вернёт поведение экрана к норме), такой подход полезен для экономии батареи, если играPaused или приостановлена.