Если вы посмотрите на документы для Цвет , вы заметите, что пример принимает float
значения:
Color newColor = new Color(0.3f, 0.4f, 0.6f, 0.3f); // r, g, b, a
или
Color newColor = new Color(0.3f, 0.4f, 0.6f); // r, g, b
Из примеров можно сделать вывод, что Color
ожидает valeus между 0 (0x00 в вашей шестнадцатеричной строке) и 1 (0xFF), но целочисленные значения этих шестнадцатеричных значений равны 0-255.Поэтому нам нужно разделить их на 255, чтобы получить значения от 0 до 1:
string tempColor;
tempColor = "E2270A";
Color m_NewColor;
float m_Red, m_Green, m_Blue;
m_Red = System.Convert.ToSingle (tempColor.Substring (0, 2), 16) / 255.0f;
m_Green = System.Convert.ToSingle (tempColor.Substring (2, 2), 16) / 255.0f;
m_Blue = System.Convert.ToSingle (tempColor.Substring (4, 2), 16) / 255.0f;
m_NewColor = new Color (m_Red, m_Green, m_Blue);
Animinstance.GetComponent<SpriteRenderer> ().color = m_NewColor;