Advertisement
gandalfbialy

Untitled

Jul 12th, 2025
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.39 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using TMPro;
  4.  
  5. [RequireComponent(typeof(Renderer))]
  6. public class ColorCar : MonoBehaviour
  7. {
  8.     [Header("References")]
  9.     [SerializeField] private Renderer _renderer;
  10.     [SerializeField] private Slider _redSlider;
  11.     [SerializeField] private Slider _greenSlider;
  12.     [SerializeField] private Slider _blueSlider;
  13.     [SerializeField] private TMP_Text _redValueText;
  14.     [SerializeField] private TMP_Text _greenValueText;
  15.     [SerializeField] private TMP_Text _blueValueText;
  16.  
  17.     private static readonly string PREF_RED = "Red";
  18.     private static readonly string PREF_GREEN = "Green";
  19.     private static readonly string PREF_BLUE = "Blue";
  20.  
  21.     private void Awake()
  22.     {
  23.         if (_renderer == null) _renderer = GetComponent<Renderer>();
  24.  
  25.         _redSlider.onValueChanged.AddListener(OnSliderChanged);
  26.         _greenSlider.onValueChanged.AddListener(OnSliderChanged);
  27.         _blueSlider.onValueChanged.AddListener(OnSliderChanged);
  28.     }
  29.  
  30.     private void Start()
  31.     {
  32.         int r = PlayerPrefs.GetInt(PREF_RED, 128);
  33.         int g = PlayerPrefs.GetInt(PREF_GREEN, 128);
  34.         int b = PlayerPrefs.GetInt(PREF_BLUE, 128);
  35.  
  36.         _redSlider.value = r;
  37.         _greenSlider.value = g;
  38.         _blueSlider.value = b;
  39.  
  40.         UpdateCarColor(r, g, b);
  41.     }
  42.  
  43.     private void OnSliderChanged(float _)
  44.     {
  45.         int r = Mathf.RoundToInt(_redSlider.value);
  46.         int g = Mathf.RoundToInt(_greenSlider.value);
  47.         int b = Mathf.RoundToInt(_blueSlider.value);
  48.  
  49.         UpdateCarColor(r, g, b);
  50.         UpdateValueTexts(r, g, b);
  51.  
  52.         PlayerPrefs.SetInt(PREF_RED, r);
  53.         PlayerPrefs.SetInt(PREF_GREEN, g);
  54.         PlayerPrefs.SetInt(PREF_BLUE, b);
  55.     }
  56.  
  57.     private void UpdateCarColor(int red, int green, int blue)
  58.     {
  59.         Color col = new Color(red / 255f, green / 255f, blue / 255f);
  60.         _renderer.material.color = col;
  61.     }
  62.  
  63.     private void UpdateValueTexts(int red, int green, int blue)
  64.     {
  65.         _redValueText.text = red.ToString();
  66.         _greenValueText.text = green.ToString();
  67.         _blueValueText.text = blue.ToString();
  68.     }
  69.  
  70.     public static Color IntToColor(int red, int green, int blue)
  71.     {
  72.         float r = (float)red / 255;
  73.         float g = (float)green / 255;
  74.         float b = (float)blue / 255;
  75.         Color col = new Color(r, g, b);
  76.         return col;
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement