Unity関連で記事のするほどじゃないけど、まとめておきたいモノを複数列挙する感じの記事です。
Tipsみたいなものなのでそれぞれに関係はありません。
解像度の変更
UnityはAndroidやiOSの実機上でゲームを実行する時に、
以下の方法でスクリプトからゲーム画面の解像度を設定できる。
float width = 640; float height = 960; bool fullscreen = true; int preferredRefreshRate = 60; Screen.SetResolution(width , height, fullscreen, preferredRefreshRate);
このままだとアス比も固定されてしまうので、
以下の方法でアス比を端末に合わせて、解像度を変更した方が良さそうです。
float screenRate = (float)1024 / Screen.height; if( screenRate > 1 ) screenRate = 1; int width = (int)(Screen.width * screenRate); int height = (int)(Screen.height * screenRate); Screen.SetResolution( width , height, true, 15);
ただ、起動時に普通にスクリプトから実行してしまうと、
解像度変更時に一瞬画面がおかしくなるので、注意が必要です.
初期化関数
Unityでは初期化を行う関数が複数あり、以下の通りの順番で呼ばれます。
これらの初期化関数が実行後、Updateなどの更新関数が始まります。
Awake()
OnEnable()
OnLevelWasLoaded(int level)
Start()
ただし、どのスクリプトのAwakeから実行されるかは不定です。
実行順序の指定は[Edit]-[Project Settings]-[Script Execution Order]から行えます。
また、OnLevelWasLoadedはシーンの読込み後に呼ばれる関数で、
最初のシーンでは呼ばれないようです。
さらに、OnEnable()はAwake()の直後に呼ばれるため、
AのAwake()、AのOnEnable()、BのAwake()、BのOnEnable()、
という順番で実行されます。
実行順序をいちいち指定してたらキリが無いので、
他のスクリプトへの参照が必要な初期化がStart、それ以外はAwakeでやっています。
更新関数
Unityでは自動で何度も実行される更新関数が複数あり、以下の通りの順番で呼ばれます。
初期化関数同様、どのスクリプトから実行されるかは不定です。
Update()
毎フレーム実行される関数。
フレームの間隔は完全に一定では無いため、不定期に実行される。
1/60秒ぐらいで実行、のような感じ。
Time.deltaTimeで前回のUpdateからの経過時間を取得できる。
LateUpdate()
Updateの後に実行される。
カメラが他のキャラクターを追う場合の追跡処理等、
他のスクリプトのUpdateが終わった後に処理を行いたい時に使う。
FixedUpdateUpdate()
定期的に実行される関数。
物理演算が行われる前に実行されるため、AddForceやら物理的な処理(?)を行う時に使用する。
なお、毎フレーム実行されるわけではないので、タッチ判定などを行うと取り逃がす危険性有り。
Time. fixedDeltaTimeで実行される間隔を取得できる。