Unityでスクリプト実行順を固定する方法

Unityのスクリプトでは、Start()Update()でスクリプトの内容を実行する時期を指定できますが、複数のスクリプトがある場合、それらの関数を実行する順番はランダムになっています。

それを指定した順で固定したい場合は

[Edit] » [Project Settings] » [Script Execution Order]

から対象のスクリプトファイルを指定することでできるみたいです。

該当スクリプトを先に実行したい場合は小さな(マイナスの)値を、後で実行したい場合は大きな(プラスの)値を設定します。

リンク

Unity – マニュアル: スクリプト実行順設定
https://docs.unity3d.com/jp/current/Manual/class-ScriptExecution.html

UnityでMathf.Clampを使ったときの挙動

Mathf.Clampはゲームを作るときに便利な関数ですが、境界での挙動がどうなっているかよく忘れてしまいます。

そこで、動作結果をメモしてみようと思います。

float版

float a0 = Mathf.Clamp (0.0f, 3.5f, 5.5f);
Debug.Log ("a0=" + a0);

float a8 = Mathf.Clamp (8.0f, 3.5f, 5.5f);
Debug.Log ("a8=" + a8);

実行結果

a0=3.5
a8=5.5

int版

int b0 = Mathf.Clamp (0, 3, 5);
Debug.Log ("b0=" + b0);

int b8 = Mathf.Clamp (8, 3, 5);
Debug.Log ("b8=" + b8);

実行結果

b0=3
b8=5

リンク

Unity – スクリプトリファレンス: Mathf.Clamp
https://docs.unity3d.com/ja/current/ScriptReference/Mathf.Clamp.html

Unityの最適化に関して参考になりそうな資料

ユニティ・テクノロジーズ・ジャパンより「最適化をする前に覚えておきたい技術」というスライドが公開されました。

【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
https://www.slideshare.net/UnityTechnologiesJapan/unity-2017-80569090

主な内容はUnity Profilerの使い方に関して。

メモ(119ページ辺りから)

  • モバイルゲームではBatch/SetPass数は200辺りまでに
    (同じマテリアルを使ってDynamic Batchingが効くようにすると良いらし)
  • 頂点数は少ない方が良いがモバイルでも数万ポリゴンは余裕

自作ゲームの最適化を考えている人は参考にしてみると良いかもしれません。