テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】ゲーム起動直後に1度だけ処理を行う

ゲーム起動時に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のインスタンスを作成します。

f:id:tsubaki_t1:20151106214857j:plain

最後にPreloadに登録します。

Edit>ProjectSettings>Playerを選択します。
Other SettingsのOptimizationのPreloaded Assetsに先ほど作成したNew HalfResolusionをD&Dで登録します。

f:id:tsubaki_t1:20151106215121j:plain

これで起動時にのみ解像度が変化するようになります。

 

ちなみにUnityEditor.EditorApplication.isPlayingOrWillChangePlaymodeは「Unityのゲームが起動したタイミングのみ呼ばれるようにする」為です。
これが無いと「Unityのゲーム再生時」「Unityのゲーム終了時」に呼ばれてしまうので、物によっては凄い鬱陶しい事になります。

関連

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp