Bir gameObjectin SkinnedMeshRenderer kısmında bulunan materyal dokusunu ve rengini aşağıdaki şekilde değiştirebilirsiniz.
Renk değiştirmek için;
RGB renkler 255,255,255 olarak tanımlanır. Kırmızı isterseniz 255,0,0 yapıp kırmızıyı maksimum yaparsınız. Ama Unity'de renk atamalarında 255 olan değerin kaşılığı 0 ile 1 arasında mesela 255 için 1f (f float anlamına geliyor) veya 127 için 0.5f dir.
yourGameObject.GetComponent<SkinnedMeshRenderer>().material.color = new Color(0.1f,1f,0);
Elinizdeki RGB kod aracılığı ile dinamik değer oluşturmanız gerekiyorsa oran orantı metodu ile elde edeceğiniz 1/255 değerini RGB kodunuzdaki R ile G ile ve B ile ayrı ayrı çarparak kullanın.
using System.Globalization; //en tepeye eklemeyi unutmayın, küsüratlı float sayı dönüştürmede lazım
string rgb = "255,0,0"; //kırmızı renginizin rgb si olsun # siz
var katsayi = 1/255; //dönüştürme oranımız
string[] renk= rgb.Split(char.Parse(",")); //virgülle parçalara ayırıyoruz, her sayıyı ayrı hesaplamamız lazım.
var newcolor = new Color(float.Parse(renk[0]*katsayi, CultureInfo.InvariantCulture), float.Parse(renk[1]*katsayi,, CultureInfo.InvariantCulture ), float.Parse(renk[2]*katsayi,, CultureInfo.InvariantCulture ));
yourGameObject.GetComponent<SkinnedMeshRenderer>().materials[0].color = newcolor;
Materyal değiştirmek için;
public Material[] NumMat;
//bu diziyi oluşturun ve arayüzden bu diziye kullanmak istediğiniz materyalleri atayın, bir amteryal dizisi olduğu için sadece materyal atayabilirsiniz, resim olmaz. Resimleri önce materyalde kullanın sonra materyali atayın. 1 tane ise 1 tane 10 tane ise 10 tane materyali bu dizi alanına ekleyin. Resimdeki gibi.
Değişikliği yapacak bir fonksiyon yazın ve aşağıdaki kodu için koyun.
var materials = yourGameObject.GetComponentInChildren<SkinnedMeshRenderer>().materials;
materials[0] = NumMat[3]; //burda 3. materyali doku olarak atamışım
yourGameObject.GetComponent<SkinnedMeshRenderer>().materials = materials;
Hiç yorum yok:
Yorum Gönder
Yorumunuz