PR

[Unity]iOSやAndroidの端末を自動スリープさせないための方法

Unity

はじめに

前回の記事で、Flutterアプリの自動スリープをさせない方法を調べたがUnityではどういう風に実装するか気になったので調べてみました。

環境

  • Unity 2021.1.19f1

実装方法

実装の方法はものすごく簡単でした。SceenのsleepTimeoutと言うフィールドに値を設定するだけです。

using UnityEngine;

// 自動スリープを無効にする.
Screen.sleepTimeout = SleepTimeout.NeverSleep;

// 自動スリープを有効にする.
Screen.sleepTimeout = SleepTimeout.SystemSetting;
Unity - Scripting API: Screen.sleepTimeout

注意点

自動スリープを無効にしてしまうと、アプリが起動した状態で端末を放置した場合にスリープしなくなります

スリープしないので、電池消費があがりユーザーに不利益が発生してしまいます。

スリープを無効にする場合は「特定の画面」や「何かをダウンロード中」等の限定的に使うのがおすすめです。

スリープの管理はしっかりしましょう。

サンプルコード

サンプルコードです。

ボタンによって自動スリープを有効/無効にしています。無効にした場合はスリープにならず、有効にした場合は有効にしてから30秒間(端末の設定により時間はちがう)無操作の時に自動スリープになりました。

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

public class SampleSceneController : MonoBehaviour
{
    [SerializeField] private Button disableButton;
    [SerializeField] private Button enableButton;

    // Start is called before the first frame update
    void Start()
    {
        disableButton?.onClick.AddListener(OnClickedDisableButton);
        enableButton?.onClick.AddListener(OnClickedEnableButton);
    }

    private void OnClickedDisableButton()
    {
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
    }

    private void OnClickedEnableButton()
    {
        Screen.sleepTimeout = SleepTimeout.SystemSetting;
    }

}

さいごに

OSの挙動に関わる部分の実装は慎重に行い、デバッグもしっかりやりましょう。

おすすめ参考書

コメント

タイトルとURLをコピーしました