LineRenderer

LineRenderer是Unity中的一个组件,用于在场景中绘制简单的线段。

LineRenderer组件允许你通过设置一系列顶点来定义线段的形状和外观。它会根据这些顶点自动在场景中绘制出线段。

下面是LineRenderer的一些重要属性和方法:

  • positionCount:可以用来设置或获取线段的顶点数量。
  • SetPosition(int index, Vector3 position):设置顶点的位置。
  • startWidthendWidth:设置线段的起始宽度和结束宽度。
  • startColorendColor:设置线段的起始颜色和结束颜色。
  • useWorldSpace:一个布尔值,用于指定是否将线段的顶点位置视为世界坐标。如果设置为false,则顶点位置将相对于LineRenderer所在的游戏对象的局部坐标系。

使用LineRenderer,你可以通过不断更新顶点位置来绘制动态的线条。在示例代码中,通过在鼠标点击和拖动时更新顶点位置,实现了绘制线条的效果。

当你调用line.positionCount++来增加顶点数量时,LineRenderer会自动在内部分配足够的内存来存储新的顶点位置。这样,你就可以通过多次调用SetPosition方法来设置每个顶点的位置,从而绘制出线段。

具体实现代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>涂鸦</summary>
public class Graffiti : MonoBehaviour
{
    private LineRenderer line;
    private int count;

    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            count = 0;
            GameObject go = new GameObject("Line");
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 5));
            go.transform.position = mousePosition;
            line = go.AddComponent<LineRenderer>();
            line.startWidth = 0.07f;
            line.endWidth = 0.07f;
        }

        else if (Input.GetMouseButton(0))
        {
            count++;
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 5));
            line.positionCount= count;
            line.SetPosition(count - 1, mousePosition);
        }
    }
}

最终效果

Unity屏幕中涂鸦-LMLPHP

11-02 08:12