目前,UGUI问世不过半年(其随着Unity 4.6发布问世),而市面上商用的产品,UI控件的至尊为NGUI:影响力和广度(可搜索公司招聘Unity 3D,常常能看到对NGUI关键词)。 NGUI虽然不是Unity 官方原生的,但以其强大的能力和友好的操作性,成为了事实上的王者—-无他,OnGUI太挫了。

通过导入自定义包,会出现如下的截图–这里我使用的是NGUI V3.6.8版本。

在其官方demo中,这个demo给我留下了非常酷的印象(右上角NGUI的logo,好像电影中维京人的帽子?):

NGUI代码的样例,极为丰富,反复临摹,可学很多东西,这里就不一一列举了,仅对学习进行小结。

  • UI Root

NGUI的UI Root类似UGUI Canvas.Screen.Camera模型;UI Root是所有NGUI控件的根元素。

创建一个NGUI元素后,在UI Root下自动带一个Camera。

另外,NGUI是第三方的,故无法像UGUI一样在Hierarchy中通过快捷键添加UI元素:

可通过主菜单–NGUI添加组件

还可以在Scene中,通过右键菜单添加UI组件(右键菜单提供了添加脚本、Help跳转到官网tasharen的Tip功能,很棒。)

  • 原生的UI组件有2个:

常使用的UI组件有2个:Lable & Sprite,其他组件是组合这2个UI组件实现的。

更多的常用控件,是通过Prefab Tool提供的,如Button、Slider、CheckBox等。

在此基础上,你也可以自定义你的UI控件,保存为Prefab即可,然后拖入到NGUI的Prefab Toolbar中保存起来。

  • 交互

    NGUI中实现控件的交互有2个步骤,主要是用碰撞检测(Trigger)和脚本实现,使用起来方便的很—成熟、好用。

1 添加Box Collider 2 添加事件脚本( *.cs)实现

NGUI默认提供了丰富了UI脚本,几乎囊括了能用到的所有脚本—可在此基础上,继续通过扩展代码完成您的需求。

  • 动画

类似交互功能,动画也是通过脚本组件实现的。 NGUI自带的Tween 有10个脚本

  • Dock:Anchors

制作复杂UI布局的时候,Anchors就显得尤为关键,故NGUI也提供了非常方便的Anchors功能—默认不开启,通过选择Type=Unifed可打开Anchors功能,设置Target对象,同时设置Left、Right、Right、Bottom、Top即可实现,相对比较方便。(默认的Target对象是该UI的父对象)

  • 图集(Atlas Maker):图片的批量压缩,提高性能。

Atlas 这个单词很诡异,以前没有见过,搜索了一下bing,发现很有趣:

使用Atlas Maker,主要目的是对批量图片进行压缩,成为一张图片,使用的时候通过offset可获得指定的图片。这个技术在GIS加载图片、Web加载图片中曾经用过。

Atlas Maker经过处理多个选择的图片后,最后产生了3个文件:

  • MyAtlas.png
  • MyAtlas.prefab
  • MyAtlas.mat

其他tip:

获取NGUI当前控件的设置值:volumn = UIProgressBar.current.value;

NGUI控件添加父子关键:NGUITools.AddChild(sprite.gameObject, item.gameObject);

NGUI一些不太好用的东西:

  • 多个Panel无法Move和对齐—panel没有边线,多个Panel不好控制。

NGUI摆放组件,移动非常不爽:一个是Camera取消不了–Gizmos尝试不行;另外移动和缩放很容易搞错。

  • NGUI的Sprite的切图SlicedSprite九宫切图,是通过设置数字修改的

widget属性,pivot,depth和size–NGUI的核心东东

  • Pivot:中心点–对齐用
  • Depth:多个控件渲染的顺序【数字越高,显示优先级越高; 使用起来有点坑–设置错误则显示不了啦】
  • Size、Aspect:大小和放大

总结:

尽管我个人比较看好UGUI,要学就学新的,1年后UGUI就成熟了嘛!  但是为了看懂一些“参考代码”,NGUI也是有必要学习、学习的,  且NGUI有较丰富的第三方UI插件生态圈呢,如NGUI HUB, TKTR等。

C#程序员整理的Unity 3D笔记(十五):Unity 3D UI控件至尊–NGUI的更多相关文章

  1. ios学习笔记第三天之UI控件

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

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

  3. C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型

    遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前 ...

  4. 【转载】国外程序员整理的Java资源大全

    以下转载自: 推荐!国外程序员整理的Java资源大全中文版    https://github.com/akullpp/awesome-java英文版 Java 几乎是许多程序员们的入门语言,并且也是 ...

  5. 推荐!国外程序员整理的 PHP 资源大全

    推荐!国外程序员整理的 PHP 资源大全 2014/08/02 · PHP, 工具与资源 · 8.5K 阅读 · 1 评论· php 分享到:0 与<YII框架>不得不说的故事—安全篇 R ...

  6. 《程序员思维修炼》读书笔记——week4

    <程序员思维修炼>读书笔记——week4 PB16061441 陈昶金 这周读的是Andy Hunt的著作<程序员思维修炼>,这本书对于我这种刚刚入门的新手很友好,大多是讲一些 ...

  7. Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

    最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下 1.UI控件与布局 常用的主要 ...

  8. VisionPro笔记(1):动态创建控件

     VisionPro学习笔记(1):动态创建控件 有的时候可能需要在程序中动态创建控件,VisionPro实例中提供了一例动态创建Blob控件的方法.当然,动态创建过多的控件会极大的消耗系统的资源,建 ...

  9. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

随机推荐

  1. 虚拟机VMware里 windows server 2003 扩充C盘方法

    你会经常用windows server 2003 吗?应该不会吧,有时一些东西必须装在windows server 2003 上才能用,所以 用虚拟机把,好,装在虚拟机上,8G的C盘够你用吗,一个稍微 ...

  2. Vue2.0表单校验组件vee-validate的使用

    vee-validate使用教程 *本文适合有一定Vue2.0基础的同学参考,根据项目的实际情况来使用,关于Vue的使用不做多余解释.本人也是一边学习一边使用,如果错误之处敬请批评指出* 一.安装 n ...

  3. 从gitbook将书籍导入到github中

    gitbook自己的导出工具经常出问题,可直接使用git. 从gitbook中clone下书 $ git clone https://git.gitbook.com/username/name_of_ ...

  4. iis 启用父目录路径访问

    今天公司有个客户保修网站后台无法访问,我查看了源代码,发现ASP代码本身并没有什么问题.而且我下到本地能够访问.就是在网上不能正常连接,显示入下错误: Server.MapPath() 错误 'ASP ...

  5. 通过SCVMM分配iSCSI存储

    除了使用基于SMB3.0应用程序的文件共享外,还可以使用iSCSI目标服务器的SAN存储,然后在SCVMM控制台中添加基于SMI-S类型的存储,步骤如下: 1.将一台安装了 iSCSI目标 功能的Wi ...

  6. xxx-servlet.xml vs applicationContext.xml

    Spring lets you define multiple contexts in a parent-child hierarchy. The applicationContext.xml def ...

  7. hdu 5279 Reflect phi 欧拉函数

    Reflect Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chi ...

  8. 框架使用的技术主要是SpringMVC 在此基础上进行扩展

    框架使用的技术主要是SpringMVC 在此基础上进行扩展 1 Web前端使用 2 前段控制器采用SpringMVC零配置 3 IOC容器Spring 4 ORM使用 Mybites或者hiberna ...

  9. memcpy的用法总结

    1.memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域):拷贝多少个?有一个size变量控制拷贝的字节数:函数原型:void *memcpy(voi ...

  10. SIGGRAPH 2014 之行

    当地时间8月8号: 经历十个多小时的飞行,在紧急出口旁的位置上忍受发动机的轰鸣声后,顺利降落温哥华机场.回答完加拿大边检的几个诸如为何而来,打算住哪儿的问题后,比较顺利出关.三十五加元的打车费及百分十 ...