コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

TMP_Text.OnSpriteAssetRequest を使うと sprite タグで Resources を使わないようにできる

使用例

using TMPro;
using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField] private TMP_SpriteAsset m_tmpSpriteAsset;

    private void Awake()
    {
        TMP_Text.OnSpriteAssetRequest += OnSpriteAssetRequest;

        TMP_SpriteAsset OnSpriteAssetRequest( int index, string name )
        {
            Debug.Log( $"index: {index}" );
            Debug.Log( $"name: {name}" );

            return name == "hoge"
                    ? m_tmpSpriteAsset
                    : Resources.Load<TMP_SpriteAsset>( $"{TMP_Settings.defaultSpriteAssetPath}/{name}" )
                ;
        }
    }
}

デフォルトだと sprite タグで使用するスプライトアセットは
Resources/Sprite Assets/ フォルダに入れておく必要があるが、
TMP_Text.OnSpriteAssetRequest を使うと
sprite タグで使用するスプライトアセットを自由に設定できるため
Resources を使わないようにできる