Advertisement
GeeItSomeLaldy

SpriteColourChanger Companion Script

Nov 7th, 2021
609
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.24 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. [ExecuteInEditMode]
  4. public class SpriteColourChanger : MonoBehaviour
  5. {
  6.     public enum ColourMode {
  7.         Mode3,
  8.         Mode6
  9.     }
  10.     public ColourMode mode = ColourMode.Mode6;
  11.     public Color R = Color.red, G = Color.green, B = Color.blue, C = Color.cyan, M = Color.magenta, Y = Color.yellow;
  12.     public Renderer Renderer => (mRenderer == null) ? mRenderer = GetComponent<Renderer>() : mRenderer;
  13.     private Renderer mRenderer;
  14.     private void Awake()
  15.     {
  16.         UpdateColours();
  17.     }
  18.     [ContextMenu("Update Colours")]
  19.     public void UpdateColours()
  20.     {
  21.         MaterialPropertyBlock materialBlock = new MaterialPropertyBlock();
  22.  
  23.         Renderer.GetPropertyBlock(materialBlock);
  24.         materialBlock.SetColor("_R", R);
  25.         materialBlock.SetColor("_G", G);
  26.         materialBlock.SetColor("_B", B);
  27.         materialBlock.SetColor("_C", mode == ColourMode.Mode6 ? C : B);
  28.         materialBlock.SetColor("_M", mode == ColourMode.Mode6 ? M : G);
  29.         materialBlock.SetColor("_Y", mode == ColourMode.Mode6 ? Y : R);
  30.         Renderer.SetPropertyBlock(materialBlock);
  31.     }
  32.  
  33.     void Update()
  34.     {
  35.         if(!Application.isPlaying)
  36.         {
  37.             UpdateColours();
  38.         }
  39.     }
  40. }
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement