Unity通过Slider滑动使用脚本动态渐变地调节物体RGB颜色

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

猜你喜欢

转载自blog.csdn.net/qq_52058429/article/details/126892812