Unity编辑器 - 使用GL绘制控件

控件较为复杂时,可能造成界面卡顿,在EditorGUI中也可以灵活使用GL绘制来提升性能。

以绘制线段为例:

using UnityEngine;
using UnityEditor; public class EditorGL {
private static Material _sLineMat; static EditorGL() {
Shader shader = Shader.Find("Hidden/Internal-Colored");
_sLineMat = new Material(shader);
_sLineMat.hideFlags = HideFlags.HideAndDontSave;
_sLineMat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
_sLineMat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
_sLineMat.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off);
_sLineMat.SetInt("_ZWrite", 0);
} public static void DrawVerticalLine(float x, float minY, float maxY, Color color) {
if (Event.current.type == EventType.Repaint) {
Color color2 = Handles.color;
_sLineMat.SetPass(0);
if (Application.platform == RuntimePlatform.WindowsEditor) {
GL.Begin(7);
}
else {
GL.Begin(1);
}
DrawVerticalLineFast(x, minY, maxY, color);
GL.End();
Handles.color = color2;
}
} private static void DrawVerticalLineFast(float x, float minY, float maxY, Color color) {
if (Application.platform == RuntimePlatform.WindowsEditor) {
GL.Color(color);
GL.Vertex(new Vector3(x - 0.5f, minY, 0f));
GL.Vertex(new Vector3(x + 0.5f, minY, 0f));
GL.Vertex(new Vector3(x + 0.5f, maxY, 0f));
GL.Vertex(new Vector3(x - 0.5f, maxY, 0f));
}
else {
GL.Color(color);
GL.Vertex(new Vector3(x, minY, 0f));
GL.Vertex(new Vector3(x, maxY, 0f));
}
}
}

Unity编辑器 - 使用GL绘制控件的更多相关文章

  1. Unity编辑器 - 鼠标悬停在控件上时改变鼠标样式

    Unity编辑器 - 鼠标悬停在控件上时改变鼠标样式 摘自Unity文档 EditorGUIUtility.AddCursorRect public static void AddCursorRect ...

  2. Unity编辑器 - DragAndDrop拖拽控件

    Unity编辑器 - DragAndDrop拖拽控件 Unity编辑器的拖拽(DragAndDrop)在网上能找到的资料少,自己稍微研究了一下,写了个相对完整的案例,效果如下 代码: object d ...

  3. 【Unity】8.1 Unity内置的UI控件

    分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 Unity 5.x内置了-套完整的GUI系统,提供了从布局.控件到皮肤的-整套GUI解决方案,因此可直接利用它做出各种风 ...

  4. 自定义View的学习(一) 自绘制控件

    一.自绘控件 就是自己绘制的控件,通过onDraw()方法将控件绘制出来  自定义一个可点击的View  这个View可以记住用户点击的次数 public class CounterView exte ...

  5. phpcms编辑器添加一键排版控件

    CKEditor添加一键排版插件实例,大家都知道phpcms也是ckeditor编辑器,那么如果增加这个一键排版这个牛逼功能呢增加好了后,效果图是这样的 废话不多说,直接说步骤第一步:config.j ...

  6. Qt自定义委托在QTableView中绘制控件、图片、文字(内容比较全)

    自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数, 1.实现在QTableView中绘制 格式字符串 2.实现在QTableView中绘制进度条 3.实现在QTab ...

  7. 030 Android 第三方开源下拉框:NiceSpinner的使用+自定义Button样式+shape绘制控件背景图+图片选择器(selector)

    1.NiceSpinner下拉框控件介绍 Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框 ...

  8. Qt自定义委托在QTableView中绘制控件、图片、文字

    自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数, 1.实现在QTableView中绘制 格式字符串 2.实现在QTableView中绘制进度条 3.实现在QTab ...

  9. Android自绘制控件

    开发过程中,我们免不了需要用到一些自定义的 View,自定义 View 一般可分为三类: ① 继承类 View —— 一般继承系统以后的基本 View,新增/重置一些自定义属性 ,例如两端对齐的Tex ...

随机推荐

  1. ThreadPoolExecutor异常处理

    java.util.concurrent包中的ThreadPoolExecutor,提供了java语言的线程池,你可以提交一个返回结果的任务(submit(Callable),返回Future),或者 ...

  2. 产线事故:删除创建mysql索引

    单表数据量:670W: 删除一个老的索引,新建一个新的索引. 事故原因: 先删除索引,应用访问量大,没有索引自然慢,数据库CPU飚到100%:新索引创建失败. 直接造成交易打烊. 日志: ------ ...

  3. 如何理解低耦合AND高内聚?[转]

    1.高内聚 首先我们来看看内聚的含义:软件含义上的内聚其实是从化学中的分子的内聚演变过来的,化学中的分子间的作用力,作用力强则表现为内聚程度高.在软件中内聚程度的高低,标识着软件设计的好坏. 我们在进 ...

  4. Knowledge Point 20180308 Dead Code

    不知道有没有前辈注意过,当你编写一段“废话式的代码时”会给出一个Dead Code警告,点击警告,那么你所写的废物代码会被编译器消除,那么如果你不理睬这个警告呢?编译后会是什么样的呢?下面我们写点代码 ...

  5. js中两个日期大小比较,获取当前日期,日期加减一天

    一.两个日期大小比较 1.日期参数格式:yyyy-mm-dd // a: 日期a, b: 日期b, flag: 返回的结果 function duibi(a, b,flag) { var arr = ...

  6. WebGL学习笔记(1)

    基本的WebGL图形操作(详细参考教程:https://www.yiibai.com/webgl,需要1周左右熟悉webgl的对象方法以及着色器代码):绘制三角形 drawElements gl.TR ...

  7. 跨浏览器实现placeholder效果的jQuery插件

    曾经遇到这样一个问题,处理IE8密码框placeholder属性兼容性.几经周折,这个方案是可以解决问题的. 1.jsp页面引入js插件 <script type="text/java ...

  8. 第一次使用mpvue的小记

    ​ 昨晚睡前打开了半个月没打开的知乎, 看到了一个专栏文章再见jquery,我的老朋友,突然想到之前github传出,github已经彻底删除jquery,这似乎标志着前端已经完全进入了一个新的时代, ...

  9. while 循环,格式化输出和运算编码

    今日内容 1.while循环 while Ture:             content = input ("请输入你要喷的内容",输入Q退出)             if ...

  10. DOM中的事件傳播機制

    要講到事件傳播機制之前,首先要瞭解的是 什麼是事件? 事件,發生在靜態頁面與動態行為之間的交互行為.是JavaScript 和 HTML的交互是通过事件实现的.比如,按鈕的點擊,鼠標的滑過,鍵盤的輸入 ...