原文地址:<Unity3D>Unity3D中LineRenderer的使用
LineRenderer线渲染器主要是用于在3D中渲染线段,虽然我们也可以使用GL图像库来渲染线段,但是使用LineRenderer我们可以对线段进行更多的操作,例如:设置颜色,宽度等。在这里要注意LineRenderer渲染出的线段的两个端点是3D世界中的点,即他是属于世界坐标(World Point)中的。
LineRenderer是以组件形成存在的,首先我们新建一个空的Game Object,然后我们选择“Component→Effects→Line Renderer”,即可为其添加LineRenderer组件了。
其实我们也可以通过脚本来为其添加LineRenderer组件:
- LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();
获取LineRenderer组件:
- lineRenderer = GetComponent<LineRenderer>();
【案例】根据鼠标左击的位置,来持续绘制线段
首先我们在场景中新建一个空的GameObject,并Reset一下。然后将Script1脚本添加给他。
- using UnityEngine;
- using System.Collections;
-
- public class Script1 : MonoBehaviour {
-
- private LineRenderer lineRenderer;
-
- private Vector3 position;
-
- private int index = 0;
-
- private int LengthOfLineRenderer=0;
-
- void Start()
- {
-
- lineRenderer = gameObject.AddComponent<LineRenderer>();
-
- lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
-
- lineRenderer.SetColors(Color.red, Color.yellow);
-
- lineRenderer.SetWidth(0.02f, 0.02f);
-
- }
-
- void Update()
- {
-
- lineRenderer = GetComponent<LineRenderer>();
-
- if (Input.GetMouseButtonDown(0))
- {
-
- position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1.0f));
-
- LengthOfLineRenderer++;
-
- lineRenderer.SetVertexCount(LengthOfLineRenderer);
-
- }
-
- while (index < LengthOfLineRenderer)
- {
-
- lineRenderer.SetPosition(index, position);
- index++;
- }
-
-
- }
-
- void OnGUI()
- {
- GUILayout.Label("当前鼠标X轴位置:" + Input.mousePosition.x);
- GUILayout.Label("当前鼠标Y轴位置:" + Input.mousePosition.y);
- }
-
-
- }
效果图:
在这里我提一下,如果我们将Input.GetMouseButtonDown(0)改为Input.GetMouseButton(0)会产生什么样的效果呢?那就是我们拖动鼠标就可以持续的渲染线段了。