Провел не один тест, устал
результат:
- Если ваше приложение не будет использовать аккелерометер, то лучше его отключить (выставить в 0) в AppController.mm, что придаст немало fps :
- Код: Выделить всё
#define kAccelerometerFrequency 0.0
- !!! НИКАКИХ !!! new (типа new Vectro3(x,y,z), new Rect()) в циклах и часто вызываемых местах!!!
- FixedUpdate это очень медленно;
- Update() в 1.5 раза быстрее коротинов;
- В настройках Editor -> Player -> iPhone Script Call Optimisation выставлять (если не дебажите) параметр Fast but no Exceptions (придает 2-ю скорость);
- смена типа float на int ( (int)float ) ни на что не повлияло, думаю так же и сдругими типами, но думаю это экономит память, если статическую переменную хранить как int и нужно будет в будущем это число обрабатывать:
- Код: Выделить всё
private static int resultF;
...
resultF = (int)Mathf.SmoothStep(0f, 360f, step);
vector3.z = trans.rotation.z + resultF;
весь тест проводился на 2-х спрайтах с использованием SpriteManager за 1 draw call в кол-ве 150 объектов:
- Update() = 25 fps
- коротина yiled return WaitForSecond(0.02) = 20 fps;
- коротина yiled return null = 20 fps;
- FixedUpdate() = 3 fps;
а вот и сам скрипт, идеальный пример как должно быть в случае замены FixedUpdate():
Используется csharp
using UnityEngine;
using System.Collections;
public class SBRotation : MonoBehaviour
{
private SBSpriteComponent thisObj;
private Transform trans;
private float step;
private static float resultF;
private static Vector3 vector3;
private static WaitForSeconds waitSec = new WaitForSeconds(0.02f);
void Start()
{
trans = gameObject.transform;
StartCoroutine_Auto(StartAnimation());
}
IEnumerator StartAnimation()
{
while (true)
{
resultF = Mathf.SmoothStep(0f, 360f, step);
step = Mathf.Repeat(step + 0.01f, 1);
vector3.x = trans.rotation.x;
vector3.y = trans.rotation.y;
vector3.z = trans.rotation.z + resultF;
trans.rotation = Quaternion.Euler(vector3);
yield return waitSec;
}
}
}
ЗЫ: проверялось на iPhone 3G с возможностью фоновой работы приложений (backgrounder). при 100 объектах вообще все шикарно