はじめに
少し前にバッテリーの消費・発熱を抑える方法について書きました。
https://www.hanachiru-blog.com/entry/2020/03/13/180000www.hanachiru-blog.com
この記事においてフレームレートを抑えればよいと書き、スクリプトで設定する方法も紹介しました。
そのスクリプトの書き方について少し追加させてください。
RuntimeInitializeOnLoadMethod
Unity5あたりからRuntimeInitializeOnLoadMethod
という属性が追加されました。
まあ西暦5年に作られたということで、はるか昔のことですが・・・。(嘘です)
この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に詳しくない方にとっては再生したら突然ゲームオブジェクトが出現したり色々なことが起きるとビックリする原因にもなるので注意してください。
ではまた。