最近项目需要用绘制动态的折线,看了一些网上图表插件没有自己需要的功能,所以学习了一下LineRenderer 组件,并把这两天学习的笔记整理一下,留作备忘。
LineRenderer 组件参数
常用的参数:
本文最后有详细的参数。
Cast Shadows:是否投影。
Receive Shadows:是否接收阴影。
Materials:线的材质。
Use World Space:是否使用世界坐标。
Loop:是否要形成环。
Width:线的宽度。
Color:渐变颜色。
使用代码贴上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Line : MonoBehaviour
{
//线段渲染器
public LineRenderer lineRenderer1;
public LineRenderer lineRenderer2;
//设置线段的个数,标示一个线由几条线段组成
private int lineLength = 4;
//记录4个点,通过这4个点去连接一条线段
private Vector3 v0 = new Vector3(1.0f, 0.0f, 0.0f);
private Vector3 v1 = new Vector3(3.0f, 1.0f, 0.0f);
private Vector3 v2 = new Vector3(6.0f, 2.0f, 0.0f);
private Vector3 v3 = new Vector3(9.0f, 3.0f, 0.0f);
public Vector3[] v5;
void Start()
{
//设置线段长度,这个数值须要和绘制线3D点的数量想等
//不设置会抛异常
lineRenderer1.SetVertexCount(lineLength);//5.x版本添加线段长度 2018版本会显示已经过时
lineRenderer2.positionCount = v5.Length;//2018版本添加线段长度
//参数(要设置的位置数组)
//参数是Vector3数组
lineRenderer2.SetPositions(v5);
//参数 (线段ID,位置)注意线段ID相同代表一个线段
lineRenderer1.SetPosition(0, v0);
lineRenderer1.SetPosition(1, v1);
lineRenderer1.SetPosition(2, v2);
lineRenderer1.SetPosition(3, v3);
}
}
运行
官方脚本API文档地址
https://docs.unity3d.com/ScriptReference/LineRenderer.html
详细参数
Cast Shadows:线是否投射阴影。
Receive Shadows:线条是否接收阴影。
Motion Vectors:运动轨迹。
Camera Motion Only 只有相机移动
Per Object Motion 每一个对象移动也会跟着移动
Force No Motion强制移动
Materials:线的材质。
Light Parameters:光照贴图参数,使该线与全局照明系统交互。
Use World Space:如果启用,则这些点将被视为世界空间坐标,而不是受此组件所附加的GameObject的变换影响。
Loop:启用此选项可连接线路的第一个和最后一个位置。这形成了一个闭环。
Positions:要连接的Vector3点数组。
Width:定义宽度值和曲线(控制线在其开始和结束之间的各个点处的宽度。曲线仅在每个顶点处采样,因此其精度受到线中存在的顶点数量的限制。线的总宽度由宽度值控制。)
Color:定义渐变以控制线条沿其长度的颜色。
Corner Vertices:增加此值可使线条边角显得更圆。
End Cap Vertices:增加此值可使线条显示更圆。
Alignment:对齐方式。
Texture Mode:添加线条纹理。
Shadow Bias:沿着光的方向移动阴影,以通过使用广告牌几何体近似体积来消除阴影瑕疵。
Generate Lighting Data:如果启用(选中该框),则使用包括法线和切线构建线几何。这允许它使用使用场景的材质照明,例如通过标准着色器,或使用自定义着色器。
Sorting Layer:渲染器的排序图层的名称。
Order in Layer:此渲染器在排序图层中的顺序。
Light Probes:基于探测器的光照插值模式。
Reflection Probes:如果启用并且场景中存在反射探测,则会为此线渲染器拾取反射纹理并将其设置为内置的着色器均匀变量。