You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity LineRenderer自定义颜色、Gradient渐变及透明度不生效问题

核心问题原因

Unity 中 Color 类的构造函数接收的 RGBA 四个参数均为 0~1 区间的浮点数,而非你传入的 0~255 区间的整数值。当你传入大于1的整数时,Unity 会自动把数值截断为 1,所以会出现以下现象:

  • new Color(172, 242, 245, 255) 四个参数全部大于1,被截断为 (1,1,1,1),也就是纯白色
  • new Color(255, 0, 0, 70) 前三个参数中 R 为255被截断为1,G/B为0,所以颜色显示为红色,alpha值70被截断为1,透明效果完全不生效
  • 系统内置的 Color.green 这类属性本身已经是0~1区间的正确赋值,所以不会出问题
  • 用 Gradient 设置时所有自定义颜色都被截断为接近白色的数值,所以整条线显示为白色

解决方法

有两种修正方案:

  1. 将你使用的0255区间的数值统一除以255f,转换为01区间的浮点数再传给 Color 构造函数
  2. 直接使用 Color32 类,它的构造函数原生支持0~255区间的整数值参数,使用起来更方便

补充注意:如果调整alpha后还是没有透明效果,请确认你赋值给LineRenderer的lineMaterial已经开启了透明渲染,比如材质使用带透明通道的Shader,且渲染模式设置为透明相关选项。

修正后的代码示例

方案1:Color 构造函数做数值转换

private void AddLineRendererColors(LineRenderer renderer)
{
    renderer.material = lineMaterial;
    renderer.useWorldSpace = true;
    // 所有0-255数值除以255f转换为0-1区间
    renderer.startColor = new Color(172/255f, 242/255f, 245/255f, 255/255f);
    renderer.endColor = new Color(255/255f, 0/255f, 0/255f, 70/255f);
}

Gradient 写法同理:

Gradient gradient = new Gradient();
GradientColorKey startGradient = new GradientColorKey(new Color(172/255f, 242/255f, 245/255f, 255/255f), 0);
GradientColorKey endGradient = new GradientColorKey(new Color(255/255f, 0, 0, 70/255f), 1);
gradient.colorKeys = new GradientColorKey[] { startGradient, endGradient };
renderer.colorGradient = gradient;

方案2:直接使用Color32

private void AddLineRendererColors(LineRenderer renderer)
{
    renderer.material = lineMaterial;
    renderer.useWorldSpace = true;
    // Color32原生支持0-255的int参数
    renderer.startColor = new Color32(172, 242, 245, 255);
    renderer.endColor = new Color32(255, 0, 0, 70);
}

Gradient 写法同理,把Color替换为Color32即可:

Gradient gradient = new Gradient();
GradientColorKey startGradient = new GradientColorKey(new Color32(172, 242, 245, 255), 0);
GradientColorKey endGradient = new GradientColorKey(new Color32(255, 0, 0, 70), 1);
gradient.colorKeys = new GradientColorKey[] { startGradient, endGradient };
renderer.colorGradient = gradient;

内容的提问来源于stack exchange,提问作者P-ratt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:42:02