在Unity中,使用LineRenderer组件可以在场景中绘制简单的线条,所以我们要实现通过鼠标移动来绘制线条的功能,可以使用LineRenderer组件实现。
要灵活进行绘制,那么就需要全程使用代码控制,包括线条的创建和基本属性设置,然后是线条的端点数的添加,具体代码可以这样编写:
using UnityEngine;
public class DrawLineOnMouseDrag : MonoBehaviour
{
private LineRenderer lineRenderer;
private bool isDrawing = false;
void Start()
{
CreateNewLine();
}
void Update()
{
if (Input.GetMouseButtonUp(0))
{
isDrawing = false;
CreateNewLine();
}
if (isDrawing && Input.GetMouseButton(0))
{
Vector3 mousePos = GetMouseWorldPosition();
lineRenderer.positionCount++;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, mousePos);
}
if (Input.GetMouseButtonDown(0))
{
isDrawing = true;
}
}
void CreateNewLine()
{
GameObject lineObject = new GameObject("Line");
lineRenderer = lineObject.AddComponent<LineRenderer>();
// 设置LineRenderer的基本属性
lineRenderer.positionCount = 0;
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
lineRenderer.startColor = Color.red;
lineRenderer.endColor = Color.blue;
lineRenderer.startWidth = 0.1f;
lineRenderer.endWidth = 0.1f;
}
Vector3 GetMouseWorldPosition()
{
Vector3 mousePos = Input.mousePosition;
mousePos.z = -Camera.main.transform.position.z;
return Camera.main.ScreenToWorldPoint(mousePos);
}
}
把脚本放到场景中,运行起来:
Unity 通过鼠标移动和LineRenderer组件实现画线功能