Unity编辑器 - 使用GL绘制控件
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绘制控件的更多相关文章
- Unity编辑器 - 鼠标悬停在控件上时改变鼠标样式
Unity编辑器 - 鼠标悬停在控件上时改变鼠标样式 摘自Unity文档 EditorGUIUtility.AddCursorRect public static void AddCursorRect ...
- Unity编辑器 - DragAndDrop拖拽控件
Unity编辑器 - DragAndDrop拖拽控件 Unity编辑器的拖拽(DragAndDrop)在网上能找到的资料少,自己稍微研究了一下,写了个相对完整的案例,效果如下 代码: object d ...
- 【Unity】8.1 Unity内置的UI控件
分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 Unity 5.x内置了-套完整的GUI系统,提供了从布局.控件到皮肤的-整套GUI解决方案,因此可直接利用它做出各种风 ...
- 自定义View的学习(一) 自绘制控件
一.自绘控件 就是自己绘制的控件,通过onDraw()方法将控件绘制出来 自定义一个可点击的View 这个View可以记住用户点击的次数 public class CounterView exte ...
- phpcms编辑器添加一键排版控件
CKEditor添加一键排版插件实例,大家都知道phpcms也是ckeditor编辑器,那么如果增加这个一键排版这个牛逼功能呢增加好了后,效果图是这样的 废话不多说,直接说步骤第一步:config.j ...
- Qt自定义委托在QTableView中绘制控件、图片、文字(内容比较全)
自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数, 1.实现在QTableView中绘制 格式字符串 2.实现在QTableView中绘制进度条 3.实现在QTab ...
- 030 Android 第三方开源下拉框:NiceSpinner的使用+自定义Button样式+shape绘制控件背景图+图片选择器(selector)
1.NiceSpinner下拉框控件介绍 Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框 ...
- Qt自定义委托在QTableView中绘制控件、图片、文字
自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数, 1.实现在QTableView中绘制 格式字符串 2.实现在QTableView中绘制进度条 3.实现在QTab ...
- Android自绘制控件
开发过程中,我们免不了需要用到一些自定义的 View,自定义 View 一般可分为三类: ① 继承类 View —— 一般继承系统以后的基本 View,新增/重置一些自定义属性 ,例如两端对齐的Tex ...
随机推荐
- 手机端app开发初识
1.所需软件说明 百度云下载链接: https://pan.baidu.com/s/1-TEQZP9QbJSlGSYedyAUFw密码: 2z8l 或者官方链接: Hbuilder:http://ww ...
- HTML中的<meta>标签的使用
HTML中<meta>标签的使用 在我们制作的网页中,要是想让它能够让更多的人去访问,最好的方法就是通过搜索引擎来找到你的网址,于是需要你的网页可以有关键词能够让搜索引擎来识别,于是HTM ...
- DQL-常见的函数
一.概述功能:类似于java中的方法好处:提高重用性和隐藏实现细节调用:select 函数名(实参列表); 二:常用的函数: ① 单行函数 1.分组函数 1.sum(),avg(),max(),min ...
- Head First Java学习笔记
1.基本概念 1.1.工作方式 源代码(.java)---编译器(执行javac程序)---产生字节码(.class与平台无关)---JAVA虚拟机(JVM,读取与执行字节码) 1.2.汇编语言是对基 ...
- AtomicReference 原子引用
AtomicReference和AtomicInteger非常类似,不同之处就在于AtomicInteger是对整数的封装,底层采用的是compareAndSwapInt实现CAS,比较的是数值是否相 ...
- C++分享笔记:扑克牌的洗牌发牌游戏设计
笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...
- Zabbix——解决中文显示乱码
前提条件: 准备好上传工具,我用的是WinSCP 使用字体是微软雅黑,如果使用其他的更改名称即可. 更改Zabbix服务器的默认参数: vi /usr/share/zabbix/include/def ...
- .Net core 下Swagger如何隐藏接口的显示
Swagger是这个非常强大的api文档工具,通常可以用来测试接口,和查看接口,就像这样: 非常的好用和快捷,这是一个小小的demo,我们在完成系统时,发布后,外部依旧可以用/swagger访问到这个 ...
- wamp 的配置
一 . 安装 二 . 配置 安装过后打开E:\wamp2\wamp\bin\apache\Apache2.2.21\conf\httpd.conf 寻找Directoy 为文件路径 里面的默认文件删 ...
- 针对jquery的ajax中的参数理解
1. url 发送请求的地址.为空表示当前页. $.ajax({ type: "post", data: studentInfo, contentType: "appli ...