Unity5になると無料版でもProfilerが使えるということで、日頃重さに苦労しているAndroid端末の処理負荷を計測してみました。
ただ、UnityのProfiler平均値がとれないのと、計測結果のが安定しないのでだいたいの平均値になります(´・ω・`)
##検証環境
Unity5 5.0.1f1
AQUOS PHONE IS12SH
Android 2.3.3
##検証1 Rigidbody2D+Collider2D
RigidbodyがついていないColliderを動かすと処理負荷があがるらしいので、実際にどのくらいの変化があるのか検証
void Start () {
gameObject.transform.position = new Vector3 (1.0f, 0.0f);
}
void Update () {
// 適当にうごかす
gameObject.transform.position = -gameObject.transform.position;
}
・Rigidbodyなし Collider2Dをつけたオブジェクト
関数 | 処理負荷 |
---|---|
MoveTest.Update | 0.12ms 〜 0.18ms |
Physics.Processing | 0.72ms 〜 0.76ms |
Physics2D.FixedUpdate | 0.06ms 〜 0.09ms |
・Rigidbodyあり COllider2Dをつけたオブジェクト
関数 | 処理負荷 |
---|---|
MoveTest.Update | 0.03ms 〜 0.09ms |
Physics.Processing | 0.42ms 〜 0.76ms |
Physics2D.FixedUpdate | 0.12ms 〜 0.18ms |
###あまりかわらない・・?
10個分のオブジェクトを作成してみた
・Rigidbodyなし Collider2Dをつけたオブジェクト
関数 | 処理負荷 |
---|---|
MoveTest.Update | 0.67ms 〜 0.94ms |
Physics.Processing | 0.30ms 〜 0.57ms |
Physics2D.FixedUpdate | 0.12ms 〜 0.24ms |
・Rigidbodyあり COllider2Dをつけたオブジェクト
関数 | 処理負荷 |
---|---|
MoveTest.Update | 0.24ms 〜 0.33ms |
Physics.Processing | 0.30ms 〜 0.57ms |
Physics2D.FixedUpdate | 0.42ms 〜 0.70ms |
##考察
Rigidbodyがない場合は MoveTest.Update 、ある場合は Physics2D.FixedUpdateが上がっている。
Rigidbodyがない場合は MoveTest.Updateのなかで CircleColiderの再作成を行っているので、こちらの処理をMoveTest.Updateで行うか、Physic2D.FixedUpdateで行うかの違いしかないのかもしれません。