RGB(红绿蓝)和HSV(色相、饱和度、明度)是两种常用的颜色表示方法,它们之间可以相互转换。
Unity组件(如Light组件的Color、Material下BaseMap的Color)在通过脚本赋值颜色时,默认接受的是RGB格式的颜色。当希望赋值HSV颜色时,需要手动调用(或实现)方法将HSV转换为RGB颜色后再赋值。
运行时真正写入 GPU 的颜色数据始终是 RGBA 四个浮点数(0-1 范围)。
这是 UnityEngine.Color 结构的内部格式,也是所有渲染 API 最终接收的格式 。
From KIMI
需要注意的是,Unity中Color类提供的静态方法 HSVToRGB(h, s,v) 需要预先将实参进行一次计算才能使用。
cs
Light a;
a.Color = Color.HSVToRGB(h / 360f, s / 100f, v / 100f);