最近,在使用unity的线渲染时需要修改线渲染的颜色,然而直接将(仅修改颜色的)材质赋值给线渲染组件,线颜色会较深(如图1-1中,左侧为赋值蓝色颜色材质的cube,右侧为赋值蓝色颜色材质的LineRenderer,可以看出线并没有显示出左侧cube同样的颜色)。尝试修改赋值给线渲染的材质,材质的Shader设置为Unlit/Color并修改MainColor的颜色(如图1-2),将修改的材质赋值给线渲染组件即可显示正确的颜色(如图1-3)。
图1-1
图1-2
图1-3
动态为LineRenderer组件设置颜色代码如下:
using UnityEngine;
public class TestLR : MonoBehaviour
{
public Material sourceMat;//用于代码新建材质的材质资源
void Start()
{
TestLineRenderer();
}
private void TestLineRenderer()
{
GameObject goLineRender = new GameObject();//新建空对象,用于添加线渲染组件
LineRenderer lineRenderer = goLineRender.AddComponent();//为新建的对象添加线渲染组件
lineRenderer.startWidth = 0.01f;//设置线渲染组件的起始宽度
lineRenderer.endWidth = 0.01f;//设置线渲染组件的结束宽度
lineRenderer.numCapVertices = 20;//设置线渲染的方向上的圆滑度
lineRenderer.numCornerVertices = 20;//设置线渲染的拐角上的圆滑度
Material mat = new Material(sourceMat); //新建材质;
mat.shader = Shader.Find("Unlit/Color");//设置材质的shader类型
mat.color = new Color(0.9f, 0.9f, 0f, 1f);//为材质的颜色赋值(rgba通道)
lineRenderer.material = mat;//将创建的材质赋值给线渲染组件
lineRenderer.positionCount = 2;//设置线渲染由2个点组成
lineRenderer.SetPosition(0, Vector3.zero);//设置第一个点(0,0,0);
lineRenderer.SetPosition(1, Vector3.one);//设置第二个点(1,1,1);
}
}
用于记录LineRenderer动态设置颜色代码,便于以后需要时查询。



