はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】FPSの設定とRuntimeInitializeOnLoadMethodがバッテリーを救う

はじめに

少し前にバッテリーの消費・発熱を抑える方法について書きました。

https://www.hanachiru-blog.com/entry/2020/03/13/180000www.hanachiru-blog.com


この記事においてフレームレートを抑えればよいと書き、スクリプトで設定する方法も紹介しました。

そのスクリプトの書き方について少し追加させてください。

RuntimeInitializeOnLoadMethod

Unity5あたりからRuntimeInitializeOnLoadMethodという属性が追加されました。

まあ西暦5年に作られたということで、はるか昔のことですが・・・。(嘘です)

tsubakit1.hateblo.jp


このRuntimeInitializeOnLoadMethodシーンにオブジェクトを配置しなくともゲームを開始したときに(エディタでも実機でも)自動で実行してくれます

using UnityEngine;

public class Initializer 
{
	[RuntimeInitializeOnLoadMethod()]
	static void Init()
	{
		Debug.Log("Initialized");
	}
}

FPSを設定する

というわけで、普通ならAwake等でFPSを設定するのが一般的?ですがこちらを使うことで楽かつシーン関係なく実装できます。

using UnityEngine;

public class Initializer
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    static void Init()
    {
        Application.targetFrameRate = 30;
    }
}

またRuntimeInitializeLoadType.BeforeSceneLoadを指定することで、Awake以前に呼ぶことができるようになります。

さいごに

この組み合わせは覚えておいて損はないと思います。

またRuntimeInitializeOnLoadMethodは色んなことに応用ができてめちゃくちゃにすごい奴ですが、あまりUnityに詳しくない方にとっては再生したら突然ゲームオブジェクトが出現したり色々なことが起きるとビックリする原因にもなるので注意してください。

ではまた。