検証内容
- 10,000 個のスプライトをシーンに配置
- Unity の Animator を使用してスプライトアニメーションを再生した場合と、
自作の C# スクリプトでスプライトアニメーションを再生した場合の FPS を比較
検証環境
- Unity 2021.3.1f1
Unity の Animator を使用した場合
11 ~ 12 FPS
自作のスプライトアニメーションの場合
30 ~ 40 FPS
結論
- シンプルなスプライトアニメーションなら Unity の Animator を使用せずに
C# スクリプトでスプライトアニメーションの仕組みを自作すると処理が速くなる
自作のスプライトアニメーションのスクリプトの例
using UnityEngine; public sealed class LightWeightSpriteAnimation : MonoBehaviour { [SerializeField] private Sprite[] m_spriteArray; [SerializeField] private SpriteRenderer m_spriteRenderer; [SerializeField] private float m_duration; private int m_frame; private float m_elapsedTime; private void Start() { m_spriteRenderer.sprite = m_spriteArray[ m_frame ]; } private void Update() { m_elapsedTime += Time.deltaTime; if ( m_elapsedTime < m_duration ) return; m_elapsedTime -= m_duration; m_frame = ( m_frame + 1 ) % m_spriteArray.Length; m_spriteRenderer.sprite = m_spriteArray[ m_frame ]; } }