Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using UnityEngine;
- using Object = UnityEngine.Object;
- namespace Extensions
- {
- /// <summary>
- /// Сreates a texture and sprite from an array of colors.
- /// </summary>
- public class GradientSprite : IDisposable
- {
- private Texture2D _texture2D;
- private Sprite _sprite;
- public GradientSprite(Color[] colors, FilterMode filterMode)
- {
- _texture2D = CreateTexture(colors, filterMode);
- _sprite = CreateSprite();
- }
- ~GradientSprite()
- {
- Dispose();
- }
- public Sprite Sprite => _sprite;
- private Sprite CreateSprite()
- {
- return Sprite.Create(
- _texture2D,
- new Rect(0.0f, 0.0f, _texture2D.width, _texture2D.height),
- new Vector2(0.5f, 0.5f), 100.0f);
- }
- private Texture2D CreateTexture(Color[] colors, FilterMode filterMode)
- {
- Texture2D texture2D = new Texture2D(colors.Length, 1, TextureFormat.ARGB32, false);
- for (int i = 0; i < colors.Length; i++)
- texture2D.SetPixel(i, 0, colors[i]);
- texture2D.wrapMode = TextureWrapMode.Clamp;
- texture2D.filterMode = filterMode;
- texture2D.hideFlags = HideFlags.HideAndDontSave;
- texture2D.Apply();
- return texture2D;
- }
- public void Dispose()
- {
- Object.Destroy(_sprite);
- Object.Destroy(_texture2D);
- GC.SuppressFinalize(this);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement