Unity3D开发之使用C#和LUA语言编写HexColor转Color函数

    当我们打开Color面板时,会发现下面有一个Hex Color值。这个是用16进制表示的颜色值。下面就是将16进制颜色值转变成color值的代码。

一.C#

    

private Color HexToColor(string hex) 十六进制转十进制
    {
        byte DEC_r = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
        byte DEC_g = byte.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
        byte DEC_b = byte.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
        byte DEC_a = byte.Parse(hex.Substring(6, 2), System.Globalization.NumberStyles.HexNumber);
        //Debug.Log("DEC_r"+ DEC_r + "DEC_g"+ DEC_g+ "DEC_b"+ DEC_b);
        float r = DEC_r / 255f;
        float g = DEC_g / 255f;
        float b = DEC_b / 255f;
        float a = DEC_a / 255f;
        return new Color(r,g,b,a);
    }

    private string ColorToHex(Color color) //十进制转十六进制
    {
        int r = Mathf.RoundToInt(color.r*255.0f);
        int g = Mathf.RoundToInt(color.g * 255.0f);
        int b = Mathf.RoundToInt(color.b * 255.0f);
        int a = Mathf.RoundToInt(color.a * 255.0f);
        string hex = string.Format("{0:X2}{1:X2}{2:X2}{3:X2}",r,g,b,a);
        return hex;
    }

二.LUA

    最近在学习Lua语言,就是对这个语言感兴趣,所以自己写了一个进制转换函数。代码如下:

function HexToColor(hex)
	local s
	s=string.sub(hex,1,2) //截取字符串  lua的索引是从1开始
	local r=tonumber(s,16)/255
	s=string.sub(hex,3,4)
	local g=tonumber(s,16)/255
	s=string.sub(hex,5,6)
	local b=tonumber(s,16)/255
	s=string.sub(hex,7,8)
	local a=tonumber(s,16)/255
	return GetNum(r),GetNum(g),GetNum(b),GetNum(a)
	end

function GetNum(a)
	return string.format('%0.3f',a) 截取小数位数  当截取两位,则是'%0.2f'
	end

print(HexToColor('B7C4FFFF'))
   这个lua因为是才学的,所以就把这个函数写到博客里顺便把一些知识点给记下来。可能方法不是最好的。希望本博客对你有帮助!

猜你喜欢

转载自blog.csdn.net/qq_33994566/article/details/80250163