Advertisement
centner_dc

Extension_GradientSprite

Oct 8th, 2020
1,006
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.58 KB | None | 0 0
  1. using System;
  2. using UnityEngine;
  3. using Object = UnityEngine.Object;
  4.  
  5. namespace Extensions
  6. {
  7.     /// <summary>
  8.     /// Сreates a texture and sprite from an array of colors.
  9.     /// </summary>
  10.     public class GradientSprite : IDisposable
  11.     {
  12.         private Texture2D _texture2D;
  13.         private Sprite _sprite;
  14.  
  15.         public GradientSprite(Color[] colors, FilterMode filterMode)
  16.         {
  17.             _texture2D = CreateTexture(colors, filterMode);
  18.             _sprite = CreateSprite();
  19.         }
  20.  
  21.         ~GradientSprite()
  22.         {
  23.             Dispose();
  24.         }
  25.  
  26.         public Sprite Sprite => _sprite;
  27.  
  28.         private Sprite CreateSprite()
  29.         {
  30.             return Sprite.Create(
  31.                 _texture2D,
  32.                 new Rect(0.0f, 0.0f, _texture2D.width, _texture2D.height),
  33.                 new Vector2(0.5f, 0.5f), 100.0f);
  34.         }
  35.  
  36.         private Texture2D CreateTexture(Color[] colors, FilterMode filterMode)
  37.         {
  38.             Texture2D texture2D = new Texture2D(colors.Length, 1, TextureFormat.ARGB32, false);
  39.  
  40.             for (int i = 0; i < colors.Length; i++)
  41.                 texture2D.SetPixel(i, 0, colors[i]);
  42.  
  43.             texture2D.wrapMode = TextureWrapMode.Clamp;
  44.             texture2D.filterMode = filterMode;
  45.             texture2D.hideFlags = HideFlags.HideAndDontSave;
  46.  
  47.             texture2D.Apply();
  48.  
  49.             return texture2D;
  50.         }
  51.  
  52.         public void Dispose()
  53.         {
  54.             Object.Destroy(_sprite);
  55.             Object.Destroy(_texture2D);
  56.             GC.SuppressFinalize(this);
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement