ゲーム起動時に1度だけ処理を行います。
サンプル
今回は解像度を半分にする処理に使用します。
これはStartやAwakeでやった場合、そのコンポーネントを持つオブジェクトが呼ばれるたびに解像度が半分になる…といった挙動になるためです。なので1回しか起動しないこの機能を利用しています。
まずHalfResolusion.csを作成して下のコードを記述します。
using UnityEngine;
using System.Collections;
[CreateAssetMenu()]
public class HalfResolusion : ScriptableObject {
[SerializeField, Range(0.1f, 1f)] float rate = 0.25f;
void OnEnable()
{
#if UNITY_EDITOR
if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode == false) { return; }
#endif
Screen.SetResolution ((int)(Screen.width * rate), (int)(Screen.height * rate), true);
}
}
次にProjectのAssets>HaldResolusionを選択してScritpableObjectのインスタンスを作成します。
最後にPreloadに登録します。
Edit>ProjectSettings>Playerを選択します。
Other SettingsのOptimizationのPreloaded Assetsに先ほど作成したNew HalfResolusionをD&Dで登録します。
これで起動時にのみ解像度が変化するようになります。
ちなみにUnityEditor.EditorApplication.isPlayingOrWillChangePlaymode
は「Unityのゲームが起動したタイミングのみ呼ばれるようにする」為です。
これが無いと「Unityのゲーム再生時」「Unityのゲーム終了時」に呼ばれてしまうので、物によっては凄い鬱陶しい事になります。