Столкнулся с такой проблемой, что мне надо было загружать значение цвета из файла.
Значение выглядело примерно так : _colObj="9221330" . Впринципе мой ответ был найден на просторах Юнити однако как часто бывает в таких случаях допилить ручками пришлось;-)
Выкладываю свой вариант...возможно есть способы сделать это проще.
Code
public static class HEXconverter{
public static int HexToInt (char hexChar){
string hex = ""+hexChar;
switch(hex){
case "0":
return 0;
case "1":
return 1;
case "2":
return 2;
case "3":
return 3;
case "4":
return 4;
case "5":
return 5;
case "6":
return 6;
case "7":
return 7;
case "8":
return 8;
case "9":
return 9;
case "A":
return 10;
case "B":
return 11;
case "C":
return 12;
case "D":
return 13;
case "E":
return 14;
case "F":
return 15;
}
return 0;
}
public static Color HexToRGB (int _val){
float red = 0f;
float green = 0f;
float blue = 0f;
string _color = _val.ToString("X");
if (_color.Length == 2) {
_color = "0000" + _color;
}
else
if (_color.Length==4){
_color = "00"+ _color;
}
red =(HexToInt(_color[5])+HexToInt(_color[4])*16.000f)/255;
green = (HexToInt (_color [3]) + HexToInt (_color [2]) * 16.000f) / 255;
blue = (HexToInt (_color [1]) + HexToInt (_color [0]) * 16.000f) / 255;
Color finalColor = new Color(red,green,blue,1);
return finalColor;
}
}
10чный цвет кода представляет собой 256x256x256 цветов . Мы переводим в hex формат наше значение
string _color = _val.ToString("X");
И добавляем несколько нулей если это необходимо чтобы у нас было значение например 00008B, а не просто 8B, нам это потребуется чтобы потом грамотно вытащить цвет.
Дальше просто смотрим на значение каждого символа в _color, заменяя его нужным числовым значением и проводим расчеты для каждого из 3 цветов.
Сохраняем значения в цвет формата rgb и отправляем в наш код;-)
Класс статичный и можно обратиться примерно так:
Color _color = HEXconverter.HexToRGB(11075499); // получим салатовый цвет;-)