Skip to content

Instantly share code, notes, and snippets.

@neogeek
Last active October 26, 2019 22:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neogeek/8806d985474b12b48a23f812d8ebd4f9 to your computer and use it in GitHub Desktop.
Save neogeek/8806d985474b12b48a23f812d8ebd4f9 to your computer and use it in GitHub Desktop.
using UnityEngine;
using UnityEngine.U2D;
using UnityEngine.UI;
namespace SmoothieOperator
{
public class SpriteAtlasHelper : MonoBehaviour
{
#pragma warning disable CS0649
[SerializeField]
private SpriteAtlas _spriteAtlas;
#pragma warning restore CS0649
private SpriteRenderer _spriteRenderer;
private Image _image;
private void Awake()
{
_spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
_image = gameObject.GetComponent<Image>();
}
private void OnEnable()
{
if (_spriteRenderer && _spriteRenderer.sprite)
{
SetSpriteRenderer(_spriteRenderer.sprite);
}
if (_image && _image.sprite)
{
SetImage(_image.sprite);
}
}
public void SetSpriteRenderer(Sprite sprite)
{
SetSpriteRenderer(sprite.name);
}
public void SetSpriteRenderer(string spriteName)
{
if (!_spriteRenderer || !_spriteAtlas)
{
return;
}
var sprite = _spriteAtlas.GetSprite(spriteName);
if (sprite && !Equals(_spriteRenderer.sprite, sprite))
{
_spriteRenderer.sprite = sprite;
}
}
public void ClearSpriteRenderer()
{
if (!_spriteRenderer)
{
return;
}
_spriteRenderer.sprite = null;
}
public void SetImage(Sprite sprite)
{
SetImage(sprite.name);
}
public void SetImage(string spriteName)
{
if (!_image || !_spriteAtlas)
{
return;
}
var sprite = _spriteAtlas.GetSprite(spriteName);
if (sprite && !Equals(_image.sprite, sprite))
{
_image.sprite = sprite;
}
}
public void ClearImage()
{
if (!_image)
{
return;
}
_image.sprite = null;
}
}
public static class SpriteCustomExtensions
{
public static string GetNiceName(this Sprite sprite)
{
return sprite.name.Replace("(Clone)", "");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment