U2L12——画线功能LineRenderer

LineRenderer

LineRenderer​是Unity提供的一个用于画线的组件,使用它我们可以在场景中绘制线段

一般可以用于:

  1. 绘制攻击范围
  2. 武器红外线
  3. 辅助功能
  4. 其他画线功能

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
12
LineRenderer                    //画线的类
lineRenderer.loop //线段是否开启首尾相连
lineRenderer.startWidth //线段开始宽
lineRenderer.endWidth //线段结束宽
lineRenderer.startColor //线段开始颜色
lineRenderer.endColor //线段结束颜色
lineRenderer.material //线段材质
lineRenderer.positionCount //线段所有的点数
lineRenderer.SetPositions(new Vector3[]{}) //从头到尾设置线段点的位置
lineRenderer.SetPosition() //指定设置某个线段点的位置
lineRenderer.useWorldSpace //是否使用世界坐标系
lineRenderer.generateLightingData //是否让线段受到光的影响

LineRenderer参数相关

image

  • 参数

    • 新版本才有的编辑模式

      • 场景编辑模式:左侧编辑点 - 右侧添加点

        • 无编辑操作

          • Simplify Preview - 简化预览
          • Tolerance - 宽容度
            偏离值,越大,偏差越大
        • 编辑点模式

          • Show Wireframe - 显示线框
          • Subdivide Selected - 细分选项
            选择两个或多个相邻点时
            该按钮启用
            会在相邻点之间插入一个新点
        • 添加点模式

          • 输入模式 - Input

            • Mouse Position - 鼠标位置

            • Physics Raycast - 基于物理射线

              • LayerMask - 哪些层检测射线
            • Min VertexDistance - 最小顶点距离
              拖动鼠标穿件点时
              会在超出该距离时创建一个点

            • Offset - 偏移量

    • Loop - 是否终点起始自动相连

    • Positions - 线段的点

    • 线段宽度曲线调整

    • Color - 颜色变化

    • Corner Vertices(角顶点,圆角)此属性指示在一条线中绘制角时使用了多少额外的顶点。
      增加此值,使线角看起来更圆。

    • End Cap Vertices(终端顶点,圆角) - 终点圆角

    • Alignment - 对齐方式

      • View - 视点:线段对着摄像机
      • Transform Z - 线段面向其Z轴
    • Texture Mode - 纹理模式

      • Stretch - 拉伸:沿整条线映射纹理一次
      • Tile - 瓷砖平铺:不停的重复纹理
      • Distribute Per Segment - 分配执行
      • Repeat Per Segment - 重复显示
    • Shadow Bias - 阴影偏移

    • Generate Lighting Data - 生成光源数据

    • Use World Space - 是否使用世界坐标系

    • Materials - 线使用的材质球

    • Lighting - 光照影响

      • Cast Shadows - 是否开启阴影
      • Receive Shadows - 接收阴影
    • Probes - 光照探针

      • Light Probes - 光探测器模式:
        不使用光探针
        使用内插光探针
        使用三维网格内插光探针
        自定义从材质决定
      • Reflection Probes - 反射探测器模式:
        不使用反射探针
        启用混合反射探针
        启用混合反射探针并且和天空和混合
        启用普通探针,重叠式不混合
    • Additional Settings - 附加设置

      • Motion Vectors - 运动矢量:

        • 使用相机运动来跟踪运动
        • 特定对象来跟踪运动
        • 不跟踪
      • Dynamic Occludee - 动态遮挡剔除

      • Sorting Layer - 排序图层

      • Order in Layer - 此线段在排序图层中的顺序

LineRenderer代码相关

动态添加一个线段

1
2
3
GameObject line = new GameObject();
line.name = "Line";
LineRenderer lineRenderer = line.AddComponent<LineRenderer>();

首尾相连

1
lineRenderer.loop = true;    //false即不开启

开始结束宽

1
2
lineRenderer.startWidth = 0.02f;
lineRenderer.endWidth = 0.02f;

开始结束颜色

1
2
lineRenderer.startColor = Color.white;
lineRenderer.endColor = Color.red;

设置材质

1
2
m = Resources.Load<Material>("M");
lineRenderer.material = m;

设置点

一定要注意,设置点 要先设置点的个数!

设置点的个数

1
lineRenderer.positionCount = 4;

从头到尾设置点

1
2
3
4
lineRenderer.SetPositions(new Vector3[] { new Vector3(0, 0, 0),
new Vector3(0, 0, 5),
new Vector3(5, 0, 5)});
//如果数组内Vector3不够,则用默认用(0,0,0)补齐

设置指定点

如果数组内Vector3​不够,则用默认用(0,0,0)补齐

1
lineRenderer.SetPosition(3, new Vector3(5, 0, 0));

是否使用世界坐标系

决定了是否随对象移动而移动

1
lineRenderer.useWorldSpace = false;

让线段受到光的影响

会接受光数据 进行着色器计算

1
lineRenderer.generateLightingData = true;