Unity-自定义颜色编辑器

一、效果演示

开发环境:2021.3.13

项目链接:https://download.csdn.net/download/m0_50811529/89861351

二、意义

        自定义颜色编辑器的开发旨在提供一个更灵活、用户友好的解决方案,使开发者能够快速、直观地处理颜色,提升工作效率。

通过构建自定义颜色编辑器,开发者可以:

  • 简化工作流程:集成常用功能,让颜色选择和调整变得更加高效。
  • 动态调整颜色:在任意平台上调整颜色,使颜色选择更加直观。
  • 增加用户体验:允许用户根据个人喜好定制颜色设置,提升开发的乐趣和效率。
     

三、代码介绍

1.创建色相环及调色盘

using UnityEngine;
using UnityEngine.UI;
public class ColorPicker : MonoBehaviour
{
    public RawImage _colorPalette;// HSV 控制明暗
    public RawImage _hueRing; // 色相环

    private Texture2D _paletteTexture;
    private Texture2D _hueTexture;

    private const float _innerRadiusFactor = 0.7f;
    private float _currentHue = 0f; // 当前选择的色相

    void Start()
    {
        // 生成调色盘纹理
        CreatePaletteTexture();

        // 生成色相环纹理
        CreateHueRingTexture();
    }
}

创建调色盘纹理的方法CreatePaletteTexture()

  • 初始化纹理:创建一个256x256的Texture2D对象。
  • 循环设置颜色:使用双重循环遍历每个像素。x轴对应饱和度,y轴对应明度,通过Color.HSVToRGB将HSV值转换为RGB颜色并设置到纹理中。
  • 应用纹理:调用Apply方法更新纹理,然后将其赋值给_colorPalette。
    private void CreatePaletteTexture()
    {
        int width = 256;
        int height = 256;
        _paletteTexture = new Texture2D(width, height);

        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {
                float saturation = (float)x / width; // x 轴作为饱和度
                float brightness = (float)y / height; // y 轴作为明度,调整为从上到下
                Color color = Color.HSVToRGB(_currentHue, saturation, brightness);
                _paletteTexture.SetPixel(x, y, color);
            }
        }
        _paletteTexture.Apply();
        _colorPalette.texture = _paletteTexture;
    }

创建色相环纹理的方法CreateHueRingTexture()

  • 初始化纹理:创建一个256x256的色相环纹理。
  • 设置半径:计算外圈和内圈的半径。
  • 循环设置颜色:遍历每个像素,计算其与中心的距离和角度。根据距离决定该像素的透明度或颜色。
    • 在内圈和外圈区域设置为透明。
    • 根据角度计算色相,并将颜色设置为饱和度和亮度均为1的RGB颜色。
  • 应用纹理:最后,将生成的纹理应用于_hueRing。
    private void CreateHueRingTexture()
    {
        int size = 256;
        _hueTexture = new Texture2D(size, size);

        float outerRadius = size / 2f;
        float innerRadius = outerRadius * 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值