iOSやAndroidの端末のスリープの時間をアプリのスクリプト上で設定する方法のメモ書きです。
てっきり端末のスリープを設定するには、ネイティブコードでプラグインを書かねばいけないと思っていました。
ただググって調べてみると、Unity側でサポートされており、C#でスクリプトをちょちょいと書けば設定できたことに驚いたので、今回筆を執った次第です
では、早速使ってみましょう。
この記事にはUnity5.6.1f1を使用しています。
Unityで使う機能はコレ、Screen.sleepTimeout
。
docs.unity3d.com
日本語訳版を説明を見る限り、
sleepTimeout は秒単位で測定されます。デフォルト値は プラットフォームにより異なり、通常 0 ではありません。
とあるので、このScreen.sleepTimeout
にスリープになるまでの時間を設定してあげるだけでOKみたいです。
ただ恐らく、スリープ関連で設定することと言えば、アプリ中にスリープさせるのかさせないのかが主な内容だと思います。
そんなときにsleepTimeout
に設定すればいいパラメータとして、SleepTimeout.NeverSleep
とSleepTimeout.SystemSetting
があります。
SleepTimeout.NeverSleep
docs.unity3d.com
SleepTimeout.SystemSetting
docs.unity3d.com
- SleepTimeout.NeverSleep
スリープを行わない。- SleepTimeout.SystemSetting
端末側で設定されているタイムアウト時間を使用する。
これらを設定すれば、アプリ内でスリープにしたいときと、したくないときに切り替えれそうです。
ただ、SleepTimeout.NeverSleep
を使ってスリープさせないようにした際は、端末のスリープ設定を無視するわけですから、あんまり多用するのもよくなさそうですね。必要不可欠なタイミングで使っていきたいです。
実際に使ってみました。
using UnityEngine; public class TestComponent : MonoBehaviour { private void Start() { Screen.sleepTimeout = SleepTimeout.NeverSleep; } } // class TestComponent
うまくスリープをしなくなったのですが、このスクリーンショットではきっと何も伝わっていないと思います。
スリープを制御したい場合はご活用ください。