由于之前刚入门的时候,应Unity3d整体发展的要求我们自学了UGUI(相对来说UGUI比NGUI做得更好一些,后面会有2者对比),但是后来公司要求使用NGUI,所以我这边把之前学习UGUI(不全,当时资源有限)和NGUI的学习心得什么的整理一下。学习UI,基础差的看一些教程,基础好的可以直接查看官方案例,根据案例上的相关功能自己做,有什么不懂的参数或者小知识网上问一下,向他人请教也是可以的。
一、NGUI
这段时间学习了一下,NGUI,个人觉得还不错,它的延伸资源比较多,毕竟存在的时间更久,功能更完善一些,还有现在大多数公司还是使用NGUI,转型比较麻烦。
NGUI我是看着教程学的,一部比较经典的教程:
(Unity插件之NGUI 完整视频教程)原教程:http://www.taikr.com/course/34?tkugui#01
个人学习:
1.首先将Options里面的Reset Prefebs toolbar,
这里面的控件可以直接拖出来用,自己做的控件也可以
制作成prefeb拖进去用
2.之前饱受困扰的在scenes场景里的相机图片,可以在
gizmos里面隐藏起来
!3.为什么视频里说将UIRoot的脚本展开就可以右键来
创建了,但其实并没有什么用
一、Label:
1.和UGUI一样,字体大小同样受限于label本身的大小,
字体大小超出控件大小,会进行自适应
2.字体有两个属性:
(1)NGUI字体:
NGUI有一个字体制作器(NGUI-Open-Font Maker)
,在这边制作的字体要选择NGUI属性
(2)unity字体:
选择动态字体,ttf,系统内置的
3.和UGUI一样,NGUI里面输入中文可能不太行,得先
在记事本里面写完再复制上去
4.字体大小与控件大小的自适应是在Overflow里面设置
的,和UGUI差不多
(1)shrink收缩(类似自适应)
(2)clamp将所写的string进行裁剪,在控件框外面自动
裁剪
(3)resize freely:将控件大小和文字大小保持一致
(4)resize height:如其所说,高度不固定,宽度固定
5.换行的地方在text处,NGUI直接回车,UGUI忘了试了,
但是程序在string中加入\n换行符还是可以起作用的
6.Alignment:对齐方式里面,有justified自动扩展字间距
使整个test与控件保持一致(只对英文起作用)
7.Gradient:颜色渐变,应该是NGUI独有的,就是字体
从上往下渐变,设置top颜色,然后bottomm颜色,自行渐变
8.Effect:text带的效果,shadow阴影,outline外部轮廓
9.Color Tint:字体颜色
10.要实现打字机的效果在label上增加一个脚本(NGUI自带的)
Fade In Time:就是有种写出来的感觉,慢慢显现出来
keep full dimension:就是是其保持完整的尺寸,未勾选上会有
一行的字不断往上移动的感觉,勾选完后就只是按设置好的位置
一个个出现
二、Sprite:
精灵显示图片用的
Altas就是图集,精灵就是其中的一块图片,
Altas图集可以在Open-Altas Maker制作
(1)Type:这里面和UGUI里讲的差不多
(2)Flip:就是各个方向翻转
三、Panel
面板
和UGUI里面差不多,类似于容器,用于分类,统一操作
和创建一个空的go差不多,
但是NGUI的panel带属性:
(1)Alpha,可以调整整体透明度
(2)Depth:这个属性UGUI不具有,UGUI只是随生成的顺序
来调节深度的,这点很麻烦,做一些操作做不到,有这个属性
会变得更简便很多
(3)Cliping:指定显示panel的某个部分,类似flash里面的
遮罩
这里面的Texture mask不太了解什么意思,教学视频没有这个
选项,个人觉得是类似于ps里面蒙版的作用,用texture遮盖
原sprite的纹理,但是透明度太低了,完全看不到效果
constraint but dont clip:设置大小,但是不要裁剪
四、Button
按钮
1.可以是label,sprite,只要增加一个点击的功能就行
2.要实现按钮功能,首先要在attach-collider给控件添加
一个collder,用来接收点击信息,然后再添加一个
buttonScript脚本,来处理点击消息响应
3.和UGUI一样,按钮有四种状态,和UGUI类似
4.消息响应也是类似于UGUI,都是将脚本挂在在一个go上,
然后将go拖拽进按钮响应事件里,并且将里面响应的方法
改为对应的方法
5.如果想将子控件(比如说父控件为精灵控件,子控件为
lable控件),想同时改变2者根据点击,停留等的响应
变化,可以在父控件上再增加一个UIButton脚本,将target
改为子控件。
其实在父控件上再加一个UIButton脚本,和在子控件上加一个
脚本差不多,但是会有问题就是,当添加UIButton脚本运行
的时候会自动添加一个TweenColor脚本,每当一个控件上有
一个UIButton脚本的时候都会带一个,所以都放在父控件上
的好处就是只会带上一个,而不是父子控件上都会带上(
经试验证明是这样,但是事实是怎么又待考证)
五、Atlas
创建图集:
Open-Atlas Maker(图集编辑器)
1.选择new
2.选择要制作成图集的图片
3.create后会新生成3个文件
(这种方法类似于cocos里面的图片打包器)
4.以后使用这个图集就是使用创建出来的新文件中的Prefeb
5.如果想删除图集里面的某张图片的话,右键预制体用
Atlas Maker打开,然后叉掉完delete掉要删除的图片
6.要更新或者增加图片还是想之前创建的时候一样,之间打开
图集的Atlas Maker然后点击想要添加的图片,会显示update或者
add,然后点击Update/Add按钮就会自行更新
六、SlicedSprite
切图(九宫切图),这个在UGUI里面也有相应的操作,
1.概念:将某些图片拉大,他的边缘会虚化,用切图可以很好的
消除边缘虚化。
2.做法:
(1)将图片文件的Type改为Sliced
(2)点击图片的Edit键进行图片编辑
①Dimensions是制作图集自动生成无需更改的
②然后更改border(为什么我更改后无法还原)
切图在按钮上用的比较多,因为按钮一般不希望被修改边框,
特别是圆角的按钮,但问题是若是按钮是圆形的呢。
3.因为NGUI不像UGUI做slice图片那么直观,所以一开始可以先
把图片放大来看,然后在编辑里面调整border的大小,看不到拉伸即可
七、dynamicFont
动态字体制作和显示:
静态字体:比如有1000个汉字,就把这1000个汉字写到一个tff
文件里(速度比较快,缺点图片有限,只能有常用的汉字)
动态字体:
1.要有一个ttf的字体集
2.打开Font Maker:
里面type前两个是静态字体,Dynamic是动态字体
bold是加粗,Italic是倾斜
创建动态字体会影响性能(多创建一个DC),还有不能是图集的
一部分
八、Widget
UIRoot的锚点为,整个UI的中心
这个值里面的Pivot就是设置整个控件的锚点(这边定死了,不知道
能不能改成非单位的改动锚点,一般用不到)
深度值,一般情况下不会用相同的深度值
snap就是让图片变回它自身本来的大小
Aspect是宽度除以高度得到的值
九、Anchor
锚点(这边是锚点,为什么还要有上面widget里的pivot)
但是这边做起来其实和锚点没有什么关系
更像是屏幕自适应的一块
有2个Type:
1.Unified
事件发生的时间:
有3个时间段:
OnEnabled
OnStart
OnUpdate
依据需要更改
2.Advanced
比Unified高级,就是target可以有多个,而前者只有一个,
更加灵活
3.里面的上下左右分别是当前控件相对于目标控件的相对位置
一般自适应大小,将上下左右分别设置为target的上下左右+0
4.要做某个控件(比如小地图)使其中心位置不变,同时在整个
UIRoot改变(或者说屏幕分辨率改变的时候)控件大小不变
(直观看过去不变,不是相对大小不变),就要将Anchors的
上下相对于目标的上下的一个保持固定位置,左右同理。
十、Tween
补间动画
相比NGUI,UGUI没有自带的Tween动画,都是用DoTween插件来
实现Tween动画的(后面觉得DoTween还蛮好用就一直在游戏中
很多地方都有用到)
1.Tweener:
给控件attach-tween(等价于给控件增加脚本)
(UGUI不带这个,之前还写了一个用来
做类似于透明度变化的脚本,NGUI里实现的不错,比较完善)
这边做的比较完整
上面的参数比较清楚,直白,就不加说明
1.这边Animation Curve这个功能比较

这篇博客详细介绍了Unity3D中NGUI和UGUI的学习过程,包括两者的使用技巧、组件功能、优缺点以及应用场景。内容涵盖NGUI的Label、Sprite、Panel、Button、Tween等多个组件,以及UGUI的Canvas模式、Text、Image和Button的使用。博主还分享了两者在屏幕适配、事件响应、动画效果等方面的区别,并提供了学习过程中的一些实用提示和常见问题解决方案。
最低0.47元/天 解锁文章

1万+

被折叠的 条评论
为什么被折叠?



