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. bootstrap table 解析写死的json.并且把进度条放进列中。

    function showPhaseInfo(phase){ //json字符串转json对象 var phaseInfo = eval(phase); $('#phaseTable').bootst ...

  2. Jstorm TimeCacheMap源代码分析

    /*** Eclipse Class Decompiler plugin, copyright (c) 2016 Chen Chao (cnfree2000@hotmail.com) ***/ pac ...

  3. imageNamed和dataWithContentsOfFile的区别(1)

    imageNamed和dataWithContentsOfFile的区别 imagecacheuiviewextensionprocessingxcode 最近老是受iphone内存问题的困扰,找了些 ...

  4. Java IP白名单相关工具类

    关于设置IP白名单相关的一些方法,整理,记录了一下. package com.tools.iptool; import java.util.ArrayList; import java.util.Ha ...

  5. easyui 上 datagrid 的表头的checkbox全选时 取消选中 disabled的checkbox

    业务需求: 正常情况下,easyui的全选checkbox会选择表中全部的checkbox包括行.及时对checkbox加了disable属性也没有效果.但是现在的业务是当对checkbox加了dis ...

  6. MySQL常用参数说明(持续更新)

      ##innodb correlate   innodb_flush_log_at_trx_commit value: 0,[1],2 effect: control the flush opera ...

  7. window下使用Composer安装yii2

    1.在 Windows 中,先下载并运行 Composer-Setup.exe,安装过程需选择php的运行目录,安装完后在windows的cmd下运行composer看看是否安装成功 2.安装完Com ...

  8. ACM 2000~2002

    ACM  2000  输入三个字符后,按各个字符的ASCⅡ码从小打到的顺序输出这三个字符. import java.util.Scanner; public class Lengxc {public ...

  9. Java敲地鼠代码

    package test; import java.awt.EventQueue; import java.awt.event.MouseAdapter; import java.awt.event. ...

  10. 【JVM】上帝视角看JVM内存模型,分而治之论各模块详情

    1. 上帝视角 [树看JVM] [图看JVM] 2. 分而治之 2.1 堆区 构成:堆区由新生代和老年代组成,新生代中包含伊甸区(Eden).幸存者区(survivor from .survivor ...