美文网首页
Unity之LineRenderer组件

Unity之LineRenderer组件

作者: 困卡 | 来源:发表于2017-04-26 11:50 被阅读0次

    LineRenderer线渲染器主要是用于在3D中渲染线段,虽然我们也可以使用GL图像库来渲染线段,但是使用LineRenderer我们可以对线段进行更多的操作,例如:设置颜色,宽度等。在这里要注意LineRenderer渲染出的线段的两个端点是3D世界中的点,即他是属于世界坐标(World Point)中的。 LineRenderer是以组件形成存在的,首先我们新建一个空的Game Object,然后我们选择“Component→Effects→Line Renderer”,即可为其添加LineRenderer组件了。


    Z0Q8Q(HTLX@56P@SF~K~$RU.png
    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);          
        }    
    }  
    

    效果图:

    Paste_Image.png

    相关文章

      网友评论

          本文标题:Unity之LineRenderer组件

          本文链接:https://www.haomeiwen.com/subject/garizttx.html