/// <summary> /// <para>指定されたスプライトを返します</para> /// <para>キャッシュに存在しない場合は SpriteAtlas からスプライトを取得してキャッシュします</para> /// <para>キャッシュに存在する場合はキャッシュから返します</para> /// </summary> public Sprite GetSprite(string spriteName) { if (m_spriteAtlas == null) { OnNullReferenceSpriteAtlas?.Invoke(this); return(null); } if (m_table.TryGetValue(spriteName, out var sprite)) { if (sprite == null) { OnNullReferenceSprite?.Invoke(this, spriteName); } return(sprite); } sprite = m_spriteAtlas.GetSprite(spriteName); if (sprite == null) { OnNullReferenceSprite?.Invoke(this, spriteName); } m_table.Add(spriteName, sprite); return(sprite); }
/// <summary> /// SpriteAtlas に含まれているすべてのスプライトをキャッシュします /// </summary> public void CacheAll() { if (m_spriteAtlas == null) { OnNullReferenceSpriteAtlas?.Invoke(this); return; } var sprites = new Sprite[m_spriteAtlas.spriteCount]; m_spriteAtlas.GetSprites(sprites); m_table.Clear(); for (var i = 0; i < sprites.Length; i++) { var sprite = sprites[i]; var name = sprite.name; name = name.Remove(name.Length - 7, 7); m_table.Add(name, sprite); } }