以下の内容はhttps://baba-s.hatenablog.com/entry/2022/07/07/090000より取得しました。


【Unity】シンプルなテキストは TextMesh Pro を使わずにスプライトフォントを自作した方が処理が速い

検証内容

  • 上記のように 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;
        }
    }
}

検証プロジェクト




以上の内容はhttps://baba-s.hatenablog.com/entry/2022/07/07/090000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14