RGB分别代表红绿蓝,A代表透明度
控制红色要调节GB,控制绿色要调节RB,控制蓝色要调节RG
当RGB数值为255时为白色
一、使用三个Slider分别单独控制某一颜色(不叠加)
代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Setmesh : MonoBehaviour
{
/// <summary>
/// 从面板获取物体的组件MeshRenderer
/// </summary>
public MeshRenderer mesh;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
/// <summary>
/// 单独调整红色
/// </summary>
/// <param name="v">Slider滑动的值</param>
public void SetRed(float v)
{
mesh.material.color = new Color(1, v, v, 1);//分别是RGB和透明度A
}
public void SetGreen(float v)
{
mesh.material.color = new Color(v, 1, v, 1);//分别是RGB和透明度A
}
public void SetBlue(float v)
{
mesh.material.color = new Color(v, v, 1, 1);//分别是RGB和透明度A
}
}
都是采用在控制面板给Slider添加事件调用函数,注意选择函数时选择这个
不渐变
二、使用三个Slider控制RGB三个颜色,并进行叠加颜色
以下是代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Setmesh : MonoBehaviour
{
/// <summary>
/// 从面板获取物体的组件MeshRenderer
/// </summary>
public MeshRenderer mesh;
/// <summary>
/// 记录颜色
/// </summary>
private Color clo;
// Start is called before the first frame update
void Start()
{
clo = mesh.material.color;
}
// Update is called once per frame
void Update()
{
}
/// <summary>
/// 控制红色通道
/// </summary>
/// <param name="v">Slider滑动的值</param>
public void SetRed(float v)
{
clo = new Color(v, clo.g, clo.b, 1);
mesh.material.color = clo;//分别是RGB和透明度A
}
/// <summary>
/// 控制绿色通道
/// </summary>
/// <param name="v">Slider滑动的值</param>
public void SetGreen(float v)
{
clo = new Color(clo.r, v, clo.b, 1);
mesh.material.color = clo;//分别是RGB和透明度A
}
/// <summary>
/// 控制蓝色通道
/// </summary>
/// <param name="v">Slider滑动的值</param>
public void SetBlue(float v)
{
clo = new Color(clo.r, clo.g, v, 1);
mesh.material.color = clo;//分别是RGB和透明度A
}
}
和上一种一样直接添加事件
QQ录屏20220916170717