因为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选择与评价的更多相关文章

  1. Atitit.现在的常用gui技术与gui技术趋势评价总结

    Atitit.现在的常用gui技术与gui技术趋势评价总结 1. Gui俩种分类:  native 和 dsl 和 script1 2. 最好的跨平台gui技术h51 2.1. 几大技术体系(java ...

  2. Unity GUI编程

    脚本语言:C# 附上一张图说明Unity GUI编程中可用的控件:(可能有遗漏) 下面列出一些例子来说明: 1.Groups : 在固定Layout模式中起到组织可用项的功能,它让你在屏幕的一个区域中 ...

  3. Unity GUI(uGUI)使用心得与性能总结

    Unity GUI(uGUI)使用心得与性能总结 作者 kingshijie 关注 2015.09.26 15:35 字数 3686 阅读 28031评论 10喜欢 49 背景和目的 小哈接触Unit ...

  4. Unity GUI自适应屏幕分辨率(一)布局自适应

    这里我们先谈第一个问题坐标矩阵变化实现布局自适应. 选取基准尺寸 通常你需要选择一个基准的屏幕尺寸,象现在开发的应用也需要跨平台在iOS(iPhone/iPad)/Android都可以运行,我这边选取 ...

  5. Unity GUI 用C#和Javascript写法的区别

    以前都是用C#来写Unity的GUI.后来因为团队需要GUI必须用C#写. 其实一开始学Unity的GUI的时候我是想用C#来写,后来折腾了好久也没弄出来.反倒是这次不经意间就搞好了. C#和Java ...

  6. Unity GUI TextField不能输入文字

    最近在弄Unity的GUI. 也算是好久不用了,有点不熟悉了. 用TextField的时候发现GUI是出来了不过不能输入文字 到网上查了一下说要用一个public的string来接收 我看了我的代码 ...

  7. 如何用Unity GUI制作HUD

    若知其所以然,自然知其然. HUD是指平视显示器,就是套在脸上,和你的眼睛固定在一起,HUD的意思就是界面咯,一般我们说HUD特指把3D空间中的界面的某些信息(比如血条,伤害之类)的贴在界面上,对应3 ...

  8. Unity GUI内绘制贝塞尔曲线

    用Handles可以直接在GUI下绘制贝塞尔 using UnityEditor; using UnityEngine; using System.Collections; public class ...

  9. unity, GUI.Button texture is black

    GUI.Button(rect,tex),结果显示出来tex是黑的,原来是因为我以前在别处调用了GUI.contentColor =Color.black. 参考:http://answers.uni ...

随机推荐

  1. 采用DWR、maven保存数据到数据库

    一.原理: Ajax是时下比较流行的一种web界面设计新思路,其核心思想是从浏览器获取XMLHttp对象与服务器端进行交互. DWR(Direct Web Remoting)就是实现了这种Ajax技术 ...

  2. 设计模式之迭代器模式(Iterator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  3. swift 进阶笔记 (一) —— 可选型

    swift定义可选型的时候,要用"?",可是在swift的标准库中,可选型的定义是Optional<T>,"? "仅仅是个简写形式. var myN ...

  4. const使用摘要

    const在四种方案如以下: int b = 500; const int *a = &b; ①(底层const) int const *a = &b; ②(底层const) int ...

  5. 安装sunvirtualbox

    按照网友提供的方法安装sunvirtualbox,老提示:依赖关系不满足: libpython2.6 (>= 2.6) 后来用终端运行 sudo apt-get install virtualb ...

  6. 瑞丽的SQL-SQL Server的表旋转(行列转换)

    所谓表旋转,就是将表的行转换为列,或是将表的列转换为行,这是从SQL Server 2005開始提供的新技术.因此,如果希望使用此功能,须要将数据库的兼容级别设置为90.表旋转在某些方面也是攻克了表的 ...

  7. windows azure Vm、cloud service、web application 如何选择可用的服务

    windows azure 的web应用和虚拟机都经常用.我们经常把我们的网站部署上去.一般选择web应用或者开一个虚拟机.开一个虚拟机就会按照虚拟机的使用时间进行计费. 那么我们选择web部署在哪里 ...

  8. 如何处理 Windows Phone 8 动态砖变成黑白砖

    原文:如何处理 Windows Phone 8 动态砖变成黑白砖 ? 问题的来龙去脉 我的 Windows Phone 8 动态砖变成黑白砖,所有图示和文字变成黑白,该如何处理? ? 问题的发生原因 ...

  9. VMware装ubuntu 进不去图形界面, 卡在Installing VMware Tools

    1.按Ctrl +C结束,进入命令行 2.ubuntu login:_ 依次输入: 1)你的用户名:输入自己的! 2)你的密码:输入自己的! 3)获取root权限:sudo su 输密码 4)/etc ...

  10. [LeetCode290]Word Pattern

    题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...