默认计划
2325人加入学习
(3人评价)
【唐老狮】Unity中的UI系统之NGUI
价格 ¥ 149.00
承诺服务
该课程属于 Unity3d实战就业路线课程套餐
请加入后再学习

尝试做了个限制数量的AudioSourceList

好处是只检测下一个AudioSource是否正在使用,

 

优点是面板可以手动调整AudioSource数量

代码执行效率较高(因为每次播放只检测一个AudioSource,不会把所有的都检查一遍)

 

缺点是不会自动扩容和回收

如果播放的音频数量超出会不播放。

 

适合的播放场景:

1.单位时间内,需要播放的音频数量变化小

2.需要播放的音频时长接近

 

 

[展开全文]

如果NGUI组件已经设置了Anchor中的相对距离,那么就不能手动移动组件位置了,必须先解除Anchor设置,移动完再设置Anchor。

[展开全文]

所以同一个Panel下的UI最好打包成同一个图集,这样的话在有不同UI层级的需求的时候也不用担心DrawCall?

[展开全文]

//Localization脚本
//1.在Resources下创建一个txt文件命名必须为Localization//2.配置文件
//3.给想要切换文字的Label对象下挂载Localize 关联Key//4.给用于切换语言的下拉列表下添加脚本Languageselection
 

[展开全文]

//方法—:
//使用uI摄像机渲染3D模型
//1.改变NGUI的整体层级为UI层
//2.改变主摄像机和NGUI摄像机的渲染层级//3.将想要被UI摄像机渲染的对象层级改为UI层//4.调整模型和uI控件的z轴距离
//方法二:
/使用多摄像机渲染 Render Texture
 

[展开全文]

#region知识点一什么是NGUI缓动
//NGUI缓动就是让控件交互时进行缩放变化透明变化位置变化角度变化等等行为

//NGUI自带Tween功能来实现这些缓动效果
#endregion
 

#region 知识点二使用NGUI缓动

//1.关键组件Tween缓动相关组件
//2.关键组件Play Tween可以通过它让该对象和输入事件关联#endregion
 

[展开全文]

region知识点一NGUI字体的作用

//1.降低DrawCall
//2.自定义美术字体#endregion
 

#region知识点二制作NGUI字体

//NGUI内部提供了字体制作工具
//1.根据字体文件生成指定内容文字达到降低DrawCall的目的

//2.使用第三方工具BitmapFont生成字体信息和图集
通过NGUI字体工具使用第三方工具生成的内容制作字体达到自定义美术字体
#endregion
 

#region 知识点三Unity动态字体和NGUI字体如何选择

//1.文字变化较多用unity动态字体变化较少用NGUI字体

//2.想要减少DrawCall用NGUI字体
//3.美术字用NGUI字体
#endregion
 

[展开全文]

//DrawCall 概念
//就是CPU(处理器)准备好渲染数据(顶点,纹理,法线,Shader等等)后//告知GPU(图形处理器-显卡)开始渲染(将命令放入命令缓冲区))的命令
//简单来说:一次DrawCall就是 cPU准备好渲染数据通知 GPU渲染的这个过癌一一唐老狮
/如果游戏中DrawCall数量较高会影响CPu的效率
//最直接的感受就是游戏会卡顿
//举例说明以拷贝文件来进行类比
//假设我们创建10000个小文件,每个文件大小为1kb,然后把这些文件拷贝到另一个文件夹中

//你会发现,即使这些问价加起来不超过10MB,但是拷贝花费的时间是很长的
//如果我们单独创建1个10NB的文件拷贝到另一个文件夹,基本可以瞬间拷贝完毕

//为什么会这样呢?
//因为每一个文件赋值动作都需要很多额外的操作,比如分配内存,创建数据等等

//这些操作就会带来一些额外的性能开销
//简单理解文件越多额外开销就越大
//渲染过程和上面的例子很类似,每次DrawCall,CPU都需要准备很多数据发送给GPU
//那么如果DrawCall越多那么额外开销就越大,其实GPu的渲染效率是很强大的,往往影响渲染效率的//都是因为CPu提交命令的速度
 

#region知识点三制作UI时降低DrawCall的技巧

//1.通过NGUI Panel上提供的DrawCall查看工具

//2.注意不同图集之间的层级关系(deep中间别的图集)
//3.注意Label的层级关系
#endregion
 

[展开全文]

//Button一点击//Toggle —值变化//等等
//如果想要制作按下抬起长按等功能利用现在的知识是无法完成的#endregion
#region 知识点二NGUI事件响应函数//添加了碰撞器的对象
//NGUI提供了一些利用反射调用的函数

//经过OnHover(bool isover)
//按下OnPress(bool pressed)

//点击onclick()
//双击 OnDoubleclick()

//拖曳开始 OnDragstart()
//拖曳中OnDrag(vector2 delta)

//拖曳结束0nDragEnd()
//拖曳经过某对象 OnDragover(Gameobject go)

//拖曳离开某对象OnDragout(Gameobject go)//等等等等
#endregion
 

、#region知识点三更加方便的uIEventListener和UIEventTrigger//他们帮助我们封装了所有特殊响应函数
//可以通过它进行管理添加
//1.UIEventListener适合代码添加
//2.UIEventTrigger适合Inspector面板关联脚本添加
#endregion

 

//UIEventListener和UIEventTrigger区别
//1.Listener更适合代码添加监听Trigger适合拖曳对象添加监听
//2.Listener传入的参数更具体 Trigger就不会传入参数我们需要在函数中去判断处理逻辑
 

[展开全文]

#region知识点一Anchor是什么//是用于9宫格布局的锚点
//它有两个关键知识点
//1.老版本—锚点组件—用于控制对象对齐方式
/2 .新版本—3大基础控件自带锚点内容一用于控制对象相对父对象布局#endregion
 

[展开全文]

#region知识点一ScrollBar和ProgressBar用来干啥
//1.ScrollBar滚动条一般不单独使用都是配合滚动视图使用类似vs右侧的滚动条

/ /2.progressBar进度条一般不咋使用一般直接用sprite的Filed填充模式即可
//他们的参数和之前的知识很类似
//所以这两个知识点不是重点了解如何制作他们即可#endregion
 

#region知识点二制作scrollbar

//1.两个sprite 1个背景1个滚动条

//2.背景父对象添加脚本
//3.添加碰撞器
//4.关联对象#endregion
 

#region知识点三制作ProgressBar

//1.两个Sprite 1个背景1个进度条

//2.背景父对象添加脚本
//3.不添加碰撞器!!!
//4.关联对象#endregion
 

[展开全文]

#region知识点二制作Popuplist
//1.一个sprite做背景一个lable做显示内容

//2.添加PopupList脚本
//3.添加碰撞器
//4.关联lable做信息更新,选择Label中的setcurrentselection函数

#endregion
 

[展开全文]

富文本

[ff0000]颜色[-]

[b]加粗[/b]

[i]斜体[/i]

[u]下划线[/u]

[s]直线穿过文字[/s]

[sub]右下角显示[/sub]

[url=http://www.baidu.com/][u]超链接[/u][/url]
 

[展开全文]

#region 知识点四修改删除图集元素

//在图集工具中操作
//增删改
#endregion
 

[展开全文]

#region知识点一图集用来干啥
//NGUI中的最小图片控件Sprite要使用图集中的图片进行显示
//图集就是把很多单独的小图合并为一张大图合并后的大图就是图集//目的:提高渲染性能工
#endregion


#region知识点二打开图集制作工具

//方法一: Project右键打开
//方法二:上方工具栏NGUI——open——Atlas Maker

#endregion


#region知识点三新建图集

//在图集工具中创建
//图集关键文件有3

//1.图集文件
//2.图集材质

//3.图集图片

#endregion
 

 

#region 知识点四修改删除图集元素//在图集工具中操作
//增删改
#endregion
 

[展开全文]

#region知识点一Eventsystem是用来干啥的

//主要作用是让摄像机渲染出来的物体
//能够接收到NGUI的输入事件
1/大部分设置不需要我们去修改
//有了它我们通过鼠标触碰键盘控制器操作UT响应玩家的输#endregion
 

#region 总结
//1.EventSystem很重要,如果没有它,我们没有办法监听玩家输入

//2.创建UI时的2DUI 和3DUI主要就是摄像机的模式不一样
/ Eventsysteh的2D和3D主要是采用2p碰撞器还是3D碰撞器不能直接改变摄像机模式#endregion
 

[展开全文]

#region知识点一必备知识—分辨率概念

//1.分辨率
//屏幕宽高两个方向的像素点

//比如1920*1080
//宽1920个像素//高1080个像素

//2.像素
//像素//像素即px
//是画面中最小的点(单位色块)

//3.屏幕尺寸
//屏幕对角线长度

//4.屏幕比例//Pc显示器
//1920:1080 = 16:9
 

//苹果手机
/ /iPhone7,8:1334* 750 =16:9
/ /iPhone 7,8 Plus: 1920*1080 = 16:9/ [iphonex:2436*1125 =19.5:9
//iPhone12:2532 * 1170 = 19.5:9

//目前市面上设备分辨率比例传统的有:

//4:3(ipad)
/ /16:10
//16:9(老手机、电脑显示器)//18:9(去掉留海屏幕)
//19.5:9(新款手机)/ /19.9:9
 

// 5.dpi //像素密度
//单位面积上有多少个像素点//一般指一英寸有多少个像素点
 

 

#region知识点二 Root是用来干啥的

//Root是用于分辨率自适应的根对象
//可以设置基本分辨率,相当于设置uI显示区域//并且管理所有UT控件的分辨率自适应
//可以简单理解它管理一个UI画布所有的uI都是显示在这个画布上的//它会管理UI画布和不同屏幕分辨率的适应关系
#endregion
 

[展开全文]

富文本[sub]最新版本也会卡死……建议不要使用

[展开全文]

比例约束记忆小技巧:宽和高,谁小照顾谁(约束谁),避免被裁减。所以 横屏游戏因为高更小,所以约束高;竖屏游戏因为宽更小,所以约束宽。这样可以保证游戏UI的完整性,使得内容只会多,不会少。虽然可能会造成画面有一定的放缩,但能够保证可以正常得到UI的完整信息。

[展开全文]

DrawCall

1、DrawCall的概念

字面理解:绘制呼叫,表示CPU通知GPU,其概念就是CPU准备号渲染数据(顶点、纹理、法线、Shader等等)后,告知GPU开始渲染(将命令放入命令缓冲区)的命令

简单来说:一次DrawCall就是CPU准备好渲染数据通知GPU渲染的这个过程

如果游戏中DrawCall数量较高会影响CPU的效率,最直接的感受就是游戏会卡顿

举个例子,以拷贝文件那来类比,假设创建10000个小文件,每个文件大小为1kb,然后把这些文件拷贝到另一个文件夹中,你会发现,即使这些文件加起来不超过10MB,但是拷贝花费的事件是很长的,但如果单独创建一个10MB的文件拷贝到另一个文件夹,基本可以瞬间完成。

这是因为每个文件赋值操作都需要很多额外的操作,比如分配内存,创建数据等等,这些操作会带来额外的性能开销,文件越多开销越大。

渲染过程类似,每次DrawCall,CPU都需要准备很多数据发送给GPU,那么如果DrawCall越多那么额外开销就越大,其实GPU的渲染效率很强,而影响渲染效率的都是CPU提交命令的速度,如果DrawCall太多,CPU就会把大量的事件花在提交DrawCall上,造成CPU过载,游戏卡顿

2、如何降低DrawCall数量

在UI层面上,通过小图合成大图——>即多个小DrawCall变成一次大DrawCall(图集)

3、制作UI时降低DrawCall的技巧

(1)注意不同图集之间的层级关系

(2)注意Label的层级关系

[展开全文]

授课教师

游戏开发前端主程

课程特色

视频(53)
下载资料(44)