画线 u3d学习总结笔记本

面板属性

常用方法:

lineRenderer.enabled =true;//组件开启
LineRenderer.positionCount = i + 1;//添加节点数量
lineRenderer.SetPosition(0, transform.position+new Vector3(0,1,0));//点1 
lineRenderer.SetPosition(1, pLayerHp.transform.position+new Vector3(0,1,0));//点2

 

GL在场景中画线

       /// <summary>
        /// 使用GL画线的回调
        /// </summary>
        public void OnRenderObject()
        {

            //创建材质球
            CreateLineMaterial();
            //激活第一个着色器通过(在本例中,我们知道它是唯一的通过)
            lineMaterial.SetPass(0);
            //渲染入栈  在Push——Pop之间写GL代码
            GL.PushMatrix();
            //矩阵相乘,将物体坐标转化为世界坐标
            GL.MultMatrix(transform.localToWorldMatrix);

            // 开始画线  在Begin——End之间写画线方式
            //GL.LINES 画线
            GL.Begin(GL.LINES);

            // 设置颜色
            GL.Color(color);

            //画线起始点;结束点
            
            GL.Vertex(center + new Vector3(DrawSize.x, DrawSize.y, DrawSize.z)); GL.Vertex(center + new Vector3(DrawSize.x, DrawSize.y, -DrawSize.z));

            GL.End();
            //渲染出栈
            GL.PopMatrix();
        }


        /// <summary>
        /// 创建一个材质球
        /// </summary>
        static void CreateLineMaterial()
        {
            //如果材质球不存在
            if (!lineMaterial)
            {
                //用代码的方式实例一个材质球
                Shader shader = Shader.Find("Hidden/Internal-Colored");
                lineMaterial = new Material(shader);
                lineMaterial.hideFlags = HideFlags.HideAndDontSave;
                //设置参数
                lineMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
                lineMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
                //设置参数
                lineMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off);
                //设置参数
                lineMaterial.SetInt("_ZWrite", 0);
            }
        }

Gizmos画线

可在编辑模式下显示
#if UNITY_EDITOR
        void OnDrawGizmos()
        {
            DrawCenter = transform.position + center;
            Gizmos.color = color;
            Gizmos.DrawWireCube(DrawCenter, Size);

        }
#endif

 


版权声明:本文为qq_40346899原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。