Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
            }
        }