<Unity3D>Unity3D中LineRenderer的使用

来源:互联网 发布:什么是网络市场营销 编辑:程序博客网 时间:2024/05/16 23:59

原文地址:<Unity3D>Unity3D中LineRenderer的使用


LineRenderer线渲染器主要是用于在3D中渲染线段,虽然我们也可以使用GL图像库来渲染线段,但是使用LineRenderer我们可以对线段进行更多的操作,例如:设置颜色,宽度等。在这里要注意LineRenderer渲染出的线段的两个端点是3D世界中的点,即他是属于世界坐标(World Point)中的。

       LineRenderer是以组件形成存在的,首先我们新建一个空的Game Object,然后我们选择“Component→Effects→Line Renderer”,即可为其添加LineRenderer组件了。

 

其实我们也可以通过脚本来为其添加LineRenderer组件:

[csharp] view plain copy
  1. LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();  


 

获取LineRenderer组件:

[csharp] view plain copy
  1. lineRenderer = GetComponent<LineRenderer>();  


 

案例】根据鼠标左击的位置,来持续绘制线段

首先我们在场景中新建一个空的GameObject,并Reset一下。然后将Script1脚本添加给他。

[csharp] view plain copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class Script1 : MonoBehaviour {  
  5.     //LineRenderer  
  6.     private LineRenderer lineRenderer;  
  7.     //定义一个Vector3,用来存储鼠标点击的位置  
  8.     private Vector3 position;  
  9.     //用来索引端点  
  10.     private int index = 0;  
  11.     //端点数  
  12.     private int LengthOfLineRenderer=0;  
  13.   
  14.     void Start()  
  15.     {  
  16.         //添加LineRenderer组件  
  17.         lineRenderer = gameObject.AddComponent<LineRenderer>();  
  18.         //设置材质  
  19.         lineRenderer.material = new Material(Shader.Find("Particles/Additive"));  
  20.         //设置颜色  
  21.         lineRenderer.SetColors(Color.red, Color.yellow);  
  22.         //设置宽度  
  23.         lineRenderer.SetWidth(0.02f, 0.02f);  
  24.           
  25.     }  
  26.   
  27.     void Update()  
  28.     {    
  29.         //获取LineRenderer组件  
  30.         lineRenderer = GetComponent<LineRenderer>();  
  31.        //鼠标左击  
  32.         if (Input.GetMouseButtonDown(0))  
  33.         {  
  34.             //将鼠标点击的屏幕坐标转换为世界坐标,然后存储到position中  
  35.             position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1.0f));   
  36.             //端点数+1  
  37.             LengthOfLineRenderer++;  
  38.             //设置线段的端点数  
  39.             lineRenderer.SetVertexCount(LengthOfLineRenderer);  
  40.               
  41.         }  
  42.         //连续绘制线段  
  43.         while (index < LengthOfLineRenderer)  
  44.         {     
  45.             //两点确定一条直线,所以我们依次绘制点就可以形成线段了  
  46.             lineRenderer.SetPosition(index, position);  
  47.             index++;  
  48.         }   
  49.          
  50.   
  51.     }  
  52.   
  53.     void OnGUI()  
  54.     {            
  55.         GUILayout.Label("当前鼠标X轴位置:" + Input.mousePosition.x);  
  56.         GUILayout.Label("当前鼠标Y轴位置:" + Input.mousePosition.y);          
  57.     }  
  58.       
  59.       
  60. }  


 

效果图:

 

 

在这里我提一下,如果我们将Input.GetMouseButtonDown(0)改为Input.GetMouseButton(0)会产生什么样的效果呢?那就是我们拖动鼠标就可以持续的渲染线段了。

0 0
原创粉丝点击