HuePaint.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using UnityEngine;
  2. namespace Assets.HeroEditor4D.Common.Scripts.EditorScripts
  3. {
  4. public class HuePaint : MonoBehaviour
  5. {
  6. [Range(0.0f, 1.0f)]
  7. public float Hue;
  8. private MaterialPropertyBlock _materialPropertyBlock;
  9. private SpriteRenderer _spriteRenderer;
  10. private readonly int _shaderColor = Shader.PropertyToID("_Color");
  11. private readonly int _shaderHue = Shader.PropertyToID("_Hue");
  12. public void OnValidate()
  13. {
  14. if (Hue > 0)
  15. {
  16. ShiftHue();
  17. }
  18. }
  19. public void Start()
  20. {
  21. if (Hue > 0)
  22. {
  23. ShiftHue();
  24. }
  25. }
  26. public void ShiftHue()
  27. {
  28. _materialPropertyBlock ??= new MaterialPropertyBlock();
  29. _spriteRenderer ??= GetComponent<SpriteRenderer>();
  30. var spriteColor = _spriteRenderer.color;
  31. _materialPropertyBlock.SetColor(_shaderColor, spriteColor);
  32. _materialPropertyBlock.SetFloat(_shaderHue, Hue);
  33. _spriteRenderer.SetPropertyBlock(_materialPropertyBlock);
  34. }
  35. }
  36. }