検証内容
- 上記のように 0.1 秒ごとに表示が変化するテキストを
シーンに 5,000 個配置する場合に
TextMesh Pro で表示した時と自作のスプライトフォントで表示した時の FPS を比較
検証環境
- Unity 2021.3.1f1
TextMesh Pro の場合
6 FPS
自作のスプライトフォントの場合
50 ~ 60 FPS
結論
スプライトフォントを自作すると処理が速くなる
自作のスプライトフォントのスクリプトの例
using System; using UnityEngine; public sealed class SpriteFont : MonoBehaviour { [SerializeField] private Sprite[] m_spriteArray; [SerializeField] private SpriteRenderer[] m_spriteRendererArray; [SerializeField] private float m_interval; private void Awake() { SetValue( 0 ); } public void SetValue( int value ) { var digits = value == 0 ? 1 : ( int ) Math.Log10( value ) + 1; for ( var i = 0; i < m_spriteRendererArray.Length; i++ ) { var reversedIndex = digits - i - 1; var x = m_interval * reversedIndex - ( m_interval * digits * 0.5f ) + m_interval * 0.5f; var spriteRenderer = m_spriteRendererArray[ i ]; spriteRenderer.transform.localPosition = new Vector3( x, 0, 0 ); if ( digits <= i ) { spriteRenderer.enabled = false; continue; } var index = value % 10; spriteRenderer.enabled = true; spriteRenderer.sprite = m_spriteArray[ index ]; value /= 10; } } }