Unity LineRenderer 组件使用

LineRenderer 是 Unity 中用于绘制线条的组件,常用于绘制路径、轨迹、激光、圆形等效果。本文将详细介绍 LineRenderer 的使用方法。

基本概念

LineRenderer 通过设置一系列顶点(positions)来绘制线条。每个顶点是一个 Vector3 坐标,线条的宽度、颜色和材质可以通过属性进行设置。

添加 LineRenderer 组件

方法 1:通过代码添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using UnityEngine;

public class LineRendererExample : MonoBehaviour
{
void Start()
{
// 添加 LineRenderer 组件
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();

// 设置 LineRenderer 属性
lineRenderer.positionCount = 2; // 设置顶点数量
lineRenderer.SetPosition(0, new Vector3(0, 0, 0)); // 设置第一个顶点
lineRenderer.SetPosition(1, new Vector3(1, 1, 0)); // 设置第二个顶点
}
}

方法 2:通过 Unity 编辑器添加

在 Unity 编辑器中,选择需要添加 LineRenderer 的游戏对象。

点击 Add Component,搜索并添加 LineRenderer 组件。

常用属性

顶点数量 (positionCount)

设置线条的顶点数量。

1
lineRenderer.positionCount = 2;

设置顶点位置 (SetPosition)

通过索引设置每个顶点的位置。

1
2
lineRenderer.SetPosition(0, new Vector3(0, 0, 0)); // 设置第一个顶点
lineRenderer.SetPosition(1, new Vector3(1, 1, 0)); // 设置第二个顶点

宽度 (startWidth 和 endWidth)

设置线条的起始宽度和结束宽度。

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

颜色 (startColor 和 endColor)

设置线条的起始颜色和结束颜色。

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

材质 (material)

1
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));

循环 (loop)

设置线条是否首尾相连。

1
lineRenderer.loop = true;

示例:我们利用该组件画一个圆圈,来显示玩家的攻击范围

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyTest : MonoBehaviour
{
private void Start()
{
DrawingCircle();
}

void DrawingCircle()
{
// 定义圆的中心点位置,这里设置为世界坐标的原点 (0, 0, 0)
Vector3 center = Vector3.zero;

// 定义圆的半径,这里设置为 3
float radius = 3f;

// 为当前游戏对象添加 LineRenderer 组件
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();

// 设置 LineRenderer 的顶点数量为 360,表示绘制一个完整的圆
lineRenderer.positionCount = 360;

// 设置 LineRenderer 的起始宽度为 0.04
lineRenderer.startWidth = 0.04f;

// 设置 LineRenderer 的结束宽度为 0.04
lineRenderer.endWidth = 0.04f;

// 设置 LineRenderer 为循环模式,使绘制的线段首尾相连
lineRenderer.loop = true;

// 通过循环计算圆上每个点的坐标,并将其设置为 LineRenderer 的顶点
for (int i = 0; i < 360; i++)
{
// 计算当前角度对应的 x 坐标
float x = center.x + radius * Mathf.Cos(i * Mathf.PI / 180f);

// 计算当前角度对应的 y 坐标
float y = center.z + radius * Mathf.Sin(i * Mathf.PI / 180f);

// 将计算得到的坐标点设置为 LineRenderer 的第 i 个顶点
lineRenderer.SetPosition(i, new Vector3(x, y, 0));
}
}
}

效果图如下

效果图