using UnityEngine; using UnityEngine.UI; namespace UI { public class ColorPicker : MonoBehaviour { [SerializeField] private Renderer previewRenderer; [SerializeField] private Button buttonNext; [SerializeField] private Button buttonPrev; [SerializeField] private Image previewImage; private int _currentIndex = 0; private Color _currentColor; private Color[] _colors = new Color[] { Color.green, Color.magenta, Color.yellow, Color.cyan }; // Start is called once before the first execution of Update after the MonoBehaviour is created public Color Color => _currentColor; void Start() { _currentColor = _colors[_currentIndex]; buttonNext.onClick.AddListener(NextColor); buttonPrev.onClick.AddListener(PrevColor); var newMaterial = new Material(previewRenderer.sharedMaterial); newMaterial.color = _currentColor; previewRenderer.sharedMaterial = newMaterial; UpdateMaterialColor(); } private void UpdateMaterialColor() { _currentColor = _colors[_currentIndex]; previewImage.color = _currentColor; previewRenderer.sharedMaterial.color = _currentColor; } private void PrevColor() { _currentIndex--; if (_currentIndex < 0) { _currentIndex = _colors.Length - 1; } UpdateMaterialColor(); } private void NextColor() { _currentIndex++; if (_currentIndex == _colors.Length) { _currentIndex = 0; } UpdateMaterialColor(); } } }