【Unity】アプリで画面の自動ロックを無効にする方法【C#】

スポンサーリンク

iOSやAndroidでアプリを作っていると、その種類によっては画面のスリープ機能がユーザー体験を損なってしまう設計になる場合があります。この記事ではUnityを使いアプリを自作している方を対象に、自動ロック(画面スリープ)機能の一時OFF設定方法をサンプルコードで紹介します。

こんな人におすすめ

・Unityでアプリを自作している
・作っているアプリが一定時間ユーザーの操作がなくスリープになる可能性がある
・自動ロックを一時的に無しにしたい

自動ロックをOFFにするコード(C#)

使用するのは「Screen.sleepTimeout」です。

サンプルコードはこちら。
※UnityのCreateでC#Script「hoge」を作っています。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class hoge : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        // 自動スリープを無効
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // アプリ終了時に呼び出し
    private void OnApplicationQuit()
    {
        // 自動スリープをシステム設定に戻す
        Screen.sleepTimeout = SleepTimeout.SystemSetting;
    }
}

【解説】
-Point 1
Startで「Screen.sleepTimeout」に「SleepTimeout」の「NeverSleep」を設定します。これにより自動ロックが一時的に無効になります。

-Point 2
「OnApplicationQuit()」はアプリケーションの終了時にシステムから呼び出される関数です。Unityの場合は再生モード終了時にこの関数が呼ばれます。ここに自動スリープの設定を元に戻す処理を書きます。
この戻す処理を書かないと、PCの画面スリープが無効になったままになる可能性があります。(アプリの場合はアプリを終了すると自動で元に戻る? – iOSでは戻ることを検証。ただし書いて置く方が無難か…) 

「Screen.sleepTimeout」に「SleepTimeout」の「SystemSetting」を入れるだけで元に戻せます。

あとがき

Unityで自動ロックを無効にする方法は、思ったよりも簡単にできるものです。タイマーアプリ各種ツールアプリ放置系ゲームなど、ユーザーの操作が一定時間無い設計になるアプリの場合はこの機能をぜひ試してみてください。

※おすすめ記事
収益化のために広告をアプリに出すためのサンプルコードについて!