Diyelim ki şu mantıkta bir kodunuz var:

SpriteRenderer sr;
Color yeniRenk = new Color(240,70,10);
void Start()
{
sr = GetComponent<SpriteRenderer>();
sr.color = yeniRenk;
}

 

Mantık olarak çalışması gerekiyor ama parent üzerinden child üzerinden, alfa kanalı ile vb. pek çok yöntem denediniz, yazım hatalarını kontrol ettiniz, internetten “solved” yazan örnekleri de denediniz ama bir türlü çalışmıyor.

Bu durumda, engine’nin yeni yersiyonundaki beklentilerine kulak asmanız gerekiyor.

2019 sonrası için, sizden renkleri şöyle göndermenizi bekliyor:

Color(0.2f, 0.6f, 1f)

Siz renkleri RGB’yi baz alarak (15,210,245) şeklinde gönderirseniz tüm değerler 0-1 aralığının dışında olduğu için kodla renklendirme işleminiz çalışmayacaktır.

Peki “0-1” aralığındaki renk kodlarını nereden bulacağız?

Aslında böyle bir kaynağa ya da programa ihtiyaç yok.

Örneğin, istediğimiz Turkuaz renk tonu şöyle olsun:

Bu durumda 48 ya da 213’ü 0-1 aralığında bir değere dönüştürmemiz lazım.

O halde
0 eşittir 0,
255 eşittir 1 gibi düşürsek oranlama/map yaparsak şöyle girdiğimizde, sorunumuz çözülmüş olacak.

Color(0.18f, 0.83f, 0.78f) 

Güzel ama hep böyle uğraşacak mıyız?

Hayır.

Şöyle bir pratik çözüm gayet mümkün:

Color (48f/255, 213f/255, 200f/200)

Sonucun Float türünde olması için 48f 123f 200f gibi yazıyoruz. 0-1 aralığında değer çıkması için de her değeri 255’e bölüyoruz: RGB yerine  Rf/255, Gf/255, Bf/255
Özetle script ile renklendirme kodumuzu sorunsuz çalışması için basitçe şöyle düzenleyebiliriz.

SpriteRenderer sr;
Color yeniRenk = new Color ( 240f/255 , 70f/255 , 10f/255 );
void Start()
{
sr = GetComponent<SpriteRenderer>();
sr.color = yeniRenk;
}


Ana görsel: My Screen Shot
Turkuaz Görsel: encycolorpedia