unity的lineRenderer

来源:互联网 发布:seo工程师考证 编辑:程序博客网 时间:2024/06/16 18:20

本文转载自http://blog.csdn.net/zuoyamin/article/details/8997729

      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 {    //LineRenderer    private LineRenderer lineRenderer;    //定义一个Vector3,用来存储鼠标点击的位置    private Vector3 position;    //用来索引端点    private int index = 0;    //端点数    private int LengthOfLineRenderer=0;    void Start()    {        //添加LineRenderer组件        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组件        lineRenderer = GetComponent<LineRenderer>();       //鼠标左击        if (Input.GetMouseButtonDown(0))        {            //将鼠标点击的屏幕坐标转换为世界坐标,然后存储到position中            position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1.0f));             //端点数+1            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)会产生什么样的效果呢?那就是我们拖动鼠标就可以持续的渲染线段了。