In alcuni contesti di videogiochi o applicazioni può essere necessario disabilitare l’oscuramento per inattività dello schermo, come ad esempio in cutscene, introduzioni o momenti in cui non vi è interazione con lo schermo da parte dell’utente.
Contrariamente a quanto si possa pensare, questa funzionalità non è presente di default nel comportamento di un applicativo compilato in Unity, ad esempio per Android o iOS, e va quindi gestito manualmente.
L’approccio più corretto risulta quindi quello di disattivare l’oscuramento dello schermo durante la sessione di gioco e ripristinarne il funzionamento di sistema una volta usciti dall’applicativo.
Per fare questo è necessario creare uno script che sia persistente tra le scene (DontDestroyOnLoad) e, sfruttando la funzione Awake() e la OnApplicationQuit(), gestire il comportamento, come nello script seguente:
public class PersistentManager : MonoBehaviour
{
private void Awake()
{
// Assicura che questo oggetto persista tra le scene
DontDestroyOnLoad(gameObject);
}
void Start()
{
#if UNITY_ANDROID || UNITY_IOS
Screen.sleepTimeout = SleepTimeout.NeverSleep;
#endif
}
void OnApplicationQuit()
{
#if UNITY_ANDROID || UNITY_IOS
Screen.sleepTimeout = SleepTimeout.SystemSetting;
#endif
}
}