将 rgb 字符串转换为 Color32
Convert an rgb string to a Color32
我有来自 JSON 文件的数据,其中包含格式为 color: '255,255,255'
的一堆 RGB 字符串 - 我想通过读取该字符串并将其转换为 color32 来为 Unity 中的内容着色,但我不知道如何将这些转换为 Unity 需要的格式:new Color32(255,255,255,255)
.
如何将字符串转换为 color32?
我已经成功地将它放入一个整数数组中,但是当我尝试这样做时出现 cannot apply indexing with [] to an expression of type int
错误:
int awayColor = team2Data.colors[0];
awayBG.color = new Color32(awayColor[0],awayColor[1],awayColor[2],255);
数据结构如下:
"colors": [
[225,68,52],
[196,214,0],
[38,40,42]
]
我用来解析 JSON 的 类 是:
[System.Serializable]
public class TeamData
{
public List<Team> teams = new List<Team>();
}
[System.Serializable]
public class Team
{
public int[] colors;
public string id;
}
我使用的函数是:
string filePath = Path.Combine(Application.dataPath, teamDataFile);
//string filePath = teamDataFile;
if(File.Exists(filePath))
{
string dataAsJson = File.ReadAllText(filePath);
//Debug.Log(dataAsJson);
teamData = JsonUtility.FromJson<TeamData>(dataAsJson);
}
else
{
Debug.Log("Cannot load game data!");
}
原来的JSON长这样:
{
"id": "ATL",
"colors": [
"225,68,52",
"196,214,0",
"38,40,42"
]
},
这里是 Color32
构造函数:
public Color32(byte r, byte g, byte b, byte a) {...}
参数是byte
而不是int
。您将 int
传递给它,因为 awayColor
变量是一个 int
。此外,awayColor
变量不是数组,但您正在执行 awayColor[0]
和 awayColor[1]
.
鉴于下面的json:
{
"id": "ATL",
"colors": [
"225,68,52",
"196,214,0",
"38,40,42"
]
}
下面是一个 class 反序列化为 (Generated from this):
[Serializable]
public class ColorInfo
{
public string id;
public List<string> colors;
}
检索颜色json值
string json = "{\r\n \"id\": \"ATL\",\r\n \"colors\": [\r\n \"225,68,52\",\r\n
ColorInfo obj = JsonUtility.FromJson<ColorInfo>(json);
获取列表中的第一个颜色并trim它
string firstColor = obj.colors[0];
firstColor = firstColor.Trim();
用逗号分割成3份再转成字节数组
byte[] color = Array.ConvertAll(firstColor.Split(','), byte.Parse);
从颜色字节数组创建Color32
Color32 rbgColor = new Color32(color[0], color[1], color[2], 255);
我有来自 JSON 文件的数据,其中包含格式为 color: '255,255,255'
的一堆 RGB 字符串 - 我想通过读取该字符串并将其转换为 color32 来为 Unity 中的内容着色,但我不知道如何将这些转换为 Unity 需要的格式:new Color32(255,255,255,255)
.
如何将字符串转换为 color32?
我已经成功地将它放入一个整数数组中,但是当我尝试这样做时出现 cannot apply indexing with [] to an expression of type int
错误:
int awayColor = team2Data.colors[0];
awayBG.color = new Color32(awayColor[0],awayColor[1],awayColor[2],255);
数据结构如下:
"colors": [
[225,68,52],
[196,214,0],
[38,40,42]
]
我用来解析 JSON 的 类 是:
[System.Serializable]
public class TeamData
{
public List<Team> teams = new List<Team>();
}
[System.Serializable]
public class Team
{
public int[] colors;
public string id;
}
我使用的函数是:
string filePath = Path.Combine(Application.dataPath, teamDataFile);
//string filePath = teamDataFile;
if(File.Exists(filePath))
{
string dataAsJson = File.ReadAllText(filePath);
//Debug.Log(dataAsJson);
teamData = JsonUtility.FromJson<TeamData>(dataAsJson);
}
else
{
Debug.Log("Cannot load game data!");
}
原来的JSON长这样:
{
"id": "ATL",
"colors": [
"225,68,52",
"196,214,0",
"38,40,42"
]
},
这里是 Color32
构造函数:
public Color32(byte r, byte g, byte b, byte a) {...}
参数是byte
而不是int
。您将 int
传递给它,因为 awayColor
变量是一个 int
。此外,awayColor
变量不是数组,但您正在执行 awayColor[0]
和 awayColor[1]
.
鉴于下面的json:
{
"id": "ATL",
"colors": [
"225,68,52",
"196,214,0",
"38,40,42"
]
}
下面是一个 class 反序列化为 (Generated from this):
[Serializable]
public class ColorInfo
{
public string id;
public List<string> colors;
}
检索颜色json值
string json = "{\r\n \"id\": \"ATL\",\r\n \"colors\": [\r\n \"225,68,52\",\r\n
ColorInfo obj = JsonUtility.FromJson<ColorInfo>(json);
获取列表中的第一个颜色并trim它
string firstColor = obj.colors[0];
firstColor = firstColor.Trim();
用逗号分割成3份再转成字节数组
byte[] color = Array.ConvertAll(firstColor.Split(','), byte.Parse);
从颜色字节数组创建Color32
Color32 rbgColor = new Color32(color[0], color[1], color[2], 255);