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因爲是才學的,所以就把這個函數寫到博客裏順便把一些知識點給記下來。可能方法不是最好的。希望本博客對你有幫助!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章