Unity GUI选择与评价
因为Unity内建的GUI不管是不是从开发效率或效率强制,因此,许多派生GUI插入,什么插件的选择,是一个非常值它被认为是。
既然是评价,就会有非常多的主观意识,这不一定成为选择的根据。
再比方。我已经习惯用NGUI插件了,那么不管你把NGUI说的再难用也无法得到我的认同。所以这篇文章很多其它的是给新手或者没接触过Unity的人作为參考的。
1、Unity自带的GUI,或者对其进行封装自己开发一套GUI框架
这两个选择都是很不明智的。Unity自带的GUI效率很低,每次渲染都是一个DrawCall。而且很难用,也无法做到所见即所得,所以没有太大的有用价值。
而依托于这个系统自己封装一下也不会改变什么,这绝对是浪费时间的举措。 Unity自带的GUI如今唯一的存在价值就是编辑器扩展或者顺手写一个測试代码加入一个Button。 只是话又说回来,假设编辑器扩展也能够所见即所得的编辑GUI。那岂不是更加方便?这绝对是正确的发展思路。
2、Unity4.6之后的新GUI系统
我今天尝试了一下新的GUI系统。感觉是中规中矩,不是非常差,可是也没有太大的亮点。 并且完毕度不是非常高,希望4.6正是版本号公布之后这个能够改善一些。
据说这个新的GUI系统是由NGUI的作者參与开发的。 感觉核心思路上与NGUI是相似的,由模型渲染打到合并DrawCall和所见即所得的编辑是正确的思路。细节实现上又具备Unity自身的风格。 总体感觉很干净。用起来也十分的方便。
只是缺点上面已经说了,控件不全。完毕度不高,非常多东西都要自己实现。比方富文本、输入框等等。
另外,它的事件系统我还没有看,不知道这里是否方便,是否支持无限的ScrollView。
3、NGUI
老牌的GUI插件。售价95美元。作为一个MMO的GUI插件来说已经绰绰有余了。 Unity的强大之处在这里体现的淋漓尽致,明明仅仅是个GUI插件,可是开发效率和实际效果不输于那些昂贵的或者是开源N年的老牌GUI框架。
NGUI的长处有三个:
1、完整。开发一个MMO所须要的控件或者功能它都有。
2、效率,它的DrawCall控制很好,多个控件渲染仅仅须要一个DrawCall
3、3D GUI的支持。通过这个你能够实现出倾斜的或者有透视效果的UI。
缺点说白了就一个,Bug太多,更新频繁导致功能混乱、难用:
作者患了更新综合症。三天更新一个版本号。这原本没有什么大问题,可是这些更新不不过Bug修正,还有非常多是接口或者操作方式的改动。NGUI并没有非常完好的文档。这导致你只能參考样例去琢磨该怎样实现。
网上的教程非常多都是针对早期版本号的。你假设看那些教程反而会被误导。插件的功能中非常多都是被废弃的,有的时候你真的不知道一个Button到底怎样创建才是正确的,是通过向导界面、还是拖一个Prefab、还是菜单中的某一个选项。
频繁更新当中一个原因是Bug太多。不知道是不是作者背负的历史包袱太重了,Hold不住了。非常多时候新增的功能是正确且合理的。可是总会伴随着非常多Bug。 比方新的锚点系统,这原本是比較强大的,可是适配多分辨率的时候执行时的分辨率会改动编辑时候的控件坐标,这就致命了。
4、Daikon Forge GUI
(最新补充:Daikon Forge GUI貌似从Unity的Asset Store下架了。不知道是作者为2.0版本号做准备还是停止开发了。尽管DF GUI展现了一种很美丽的工作流程,可是它在手持设备上的渲染效率问题貌似成了致命伤,我一開始选择DF GUI貌似是个错误的选择。如今想来。直接使用NGUI,然后对其进行再封装改进工作流似乎是更好的选择)
这个是13年9月份推出的新的GUI插件,可是很的完整和优秀,也是我正在使用的GUI插件。 主要跟NGUI进行对照。
1、尽管非常新,可是非常完整,各种空间一应俱全,甚至直接内嵌了基于Html的富文本显示。这个NGUI还要再买另外一个插件来支持。 各种图片显示(比如九宫格切分)都支持,输入框、ScrollView也都支持,Demo中的样例也非常多。比方3D场景中的GUI应用、CoverFlow效果等等。
2、DrawCall合并处理上比NGUI弱许多。你必需要给UIRoot指定一个Default Atlas,然后它才干给子控件合并DrawCall。否则就是有一个控件多一个DrawCall。正常来说。一个MMO的游戏UI元素许多。不可能用一个图集就把全部的元素都包括在内,所以这个功能很的鸡肋。也是急需优化的。
3、一些细节还须要优化。比方Label控件的中文换行。文本阴影对半透明的支持。
4、与NGUI相比,DF GUI最大的长处就是整洁、干净,使用起来非常方便,比方它非常人性化的加入了右键菜单创建控件、绑定事件的功能。
绑定事件就是仅仅须要加入一个public的函数。然后就能够通过下拉列表选择。 或者直接给控件上面绑定的脚本加入一个OnClick函数,然后就能够响应点击事件。这些都是非常小的细节。可是却让开发变得高效、方便,而一个框架。能够让使用者用的方便。本身就是最大的价值。
5、NGUI中两个比較粗陋的部分DF GUI都实现得很美丽。
一个是界面之间的层级遮挡,也就是Depth管理。NGUI早期能够通过z-order和Depth来管理,这使得界面一多管理层级关系无比困难,后面NGUI在3.0版本号最终改进了一下,可是与DF GUI相比仍显得不够智能。
NGUI中你须要自己分配Depth数值,而且编辑改动同层级的错误情况,而DF GUI中指定Depth后,会自己主动修正其它的Panel的Depth。就像DF GUI的作者说的那样,你不须要知道它是怎样保证正确的,可是它就是正确的。使用DF GUI非常多时候你不须要关心其内部实现。由于它自然而然的就是正确的。
二是锚点处理。 锚点在实现多分辨率适配的时候是很重要的。
NGUI的新锚点系统按理说是比較强大的,它能够指定控件基于哪个对象对齐。可是这个系统真正实现起来想要完好是很困难的,并且真正实现了有用价值也没有想象中大。反观DF GUI的锚点系统就很美丽,它能够指定控件或者Panel基于父窗体的对齐或者拉伸方式。通过这个就能够很方便的进行多分辨率适配。
5、EZ GUI或者2dTookit自带的GUI
这些能够代表非常多GUI插件。这些插件功能不是非常完好,可是麻雀虽小五脏俱全。比方2d tookit中的GUI。各种控件都有。拿来做一些小游戏绰绰有余。可是因为不具备一些复杂的功能比方锚点或者富文本控件等,所以拿来做MMO还是有些困难。
这些GUI插件。假设用来做小游戏,或者是自己很喜欢、熟悉,那么相同能够成为选择之中的一个。
总结一下,假设熟悉NGUI的,那么能够使用NGUI,否则Daikon Forge GUI是最好选择。 4.6提供的新GUI系统须要等待时间使其完好。
再次补充:近期看到Asset Store上面的评论说DF GUI渲染效率成问题。即便DrawCall控制住了实际绘制效率也不理想,在移动设备上面使用非常吃亏。作者在开发2.0。不知道会改变成什么样子。就我自己的測试来看,其渲染效率没有到不可用的地步,只是确实也没有什么值得称道的地方。所以使用DF GUI学生们要小心,在最后时刻,在上述的效率不坑。
版权声明:本文博主原创文章,博客,未经同意不得转载。
Unity GUI选择与评价的更多相关文章
- Atitit.现在的常用gui技术与gui技术趋势评价总结
Atitit.现在的常用gui技术与gui技术趋势评价总结 1. Gui俩种分类: native 和 dsl 和 script1 2. 最好的跨平台gui技术h51 2.1. 几大技术体系(java ...
- Unity GUI编程
脚本语言:C# 附上一张图说明Unity GUI编程中可用的控件:(可能有遗漏) 下面列出一些例子来说明: 1.Groups : 在固定Layout模式中起到组织可用项的功能,它让你在屏幕的一个区域中 ...
- Unity GUI(uGUI)使用心得与性能总结
Unity GUI(uGUI)使用心得与性能总结 作者 kingshijie 关注 2015.09.26 15:35 字数 3686 阅读 28031评论 10喜欢 49 背景和目的 小哈接触Unit ...
- Unity GUI自适应屏幕分辨率(一)布局自适应
这里我们先谈第一个问题坐标矩阵变化实现布局自适应. 选取基准尺寸 通常你需要选择一个基准的屏幕尺寸,象现在开发的应用也需要跨平台在iOS(iPhone/iPad)/Android都可以运行,我这边选取 ...
- Unity GUI 用C#和Javascript写法的区别
以前都是用C#来写Unity的GUI.后来因为团队需要GUI必须用C#写. 其实一开始学Unity的GUI的时候我是想用C#来写,后来折腾了好久也没弄出来.反倒是这次不经意间就搞好了. C#和Java ...
- Unity GUI TextField不能输入文字
最近在弄Unity的GUI. 也算是好久不用了,有点不熟悉了. 用TextField的时候发现GUI是出来了不过不能输入文字 到网上查了一下说要用一个public的string来接收 我看了我的代码 ...
- 如何用Unity GUI制作HUD
若知其所以然,自然知其然. HUD是指平视显示器,就是套在脸上,和你的眼睛固定在一起,HUD的意思就是界面咯,一般我们说HUD特指把3D空间中的界面的某些信息(比如血条,伤害之类)的贴在界面上,对应3 ...
- Unity GUI内绘制贝塞尔曲线
用Handles可以直接在GUI下绘制贝塞尔 using UnityEditor; using UnityEngine; using System.Collections; public class ...
- unity, GUI.Button texture is black
GUI.Button(rect,tex),结果显示出来tex是黑的,原来是因为我以前在别处调用了GUI.contentColor =Color.black. 参考:http://answers.uni ...
随机推荐
- HTML5特性检測
HTML5特性检測: 1.检測全局对象:诸如window或navigator是否拥有特定的属性 2.创建元素:检測该元素的DOM对象是否拥有特定的属性 3.创建元素:检測该元素的DO ...
- java 通过sftp服务器上传下载删除文件
最近做了一个sftp服务器文件下载的功能,mark一下: 首先是一个SftpClientUtil 类,封装了对sftp服务器文件上传.下载.删除的方法 import java.io.File; imp ...
- JavaScript的作用域和变量对象
变量对象 先来说说什么是变量对象.变量对象中又存储了什么东西吧. JavaScript中的运行环境包含全局运行环境和函数运行环境这两种,每进入到一个运行环境都会创建一个变量对象,这个对象中记录了在当前 ...
- 在iOS7中改动状态栏字体的颜色
状态栏的字体为黑色:UIStatusBarStyleDefault 状态栏的字体为白色:UIStatusBarStyleLightContent 一.在info.plist中,将View contro ...
- HDU 2828 DLX搜索
Lamp Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 完整的java字符串编码转换代码
package book.String; import java.io.UnsupportedEncodingException; /** *//** * 转换字符串的编码 * @author joe ...
- 初识google多语言通信框架gRPC系列(一)概述
gRPC概述 3/26/2016 9:16:08 AM 目录 一.概述 二.编译gRPC 三.C#中使用gRPC 四.C++中使用gRPC 一直在寻找多平台多语言的通信框架,微软的WCF框架很强大和灵 ...
- Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)
就在昨天,北京时间5月30日20点多.Spark 1.0.0最终公布了:Spark 1.0.0 released 依据官网描写叙述,Spark 1.0.0支持SQL编写:Spark SQL Progr ...
- 【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃
(1)navigationBar导航栏可以被看作是self.navigationController一个属性导航控制器,它可以由点直接表示self.navigationController.navig ...
- C# Windows Phone 8 WP8 , 文字超连结到网页 免打程式码,Xaml就搞定 ! !
原文:C# Windows Phone 8 WP8 , 文字超连结到网页 免打程式码,Xaml就搞定 ! ! 一般我们在开发Windows Phone 8 APP ,有时会需要超连结连到其他的网页,但 ...