Unity3D NGUI教程:精灵与DrawCall优化

需积分: 10 1 下载量 134 浏览量 更新于2024-07-16 收藏 5.2MB PDF 举报
本资源是一份关于Unity3D NGUI的教学文档,专注于NGUI(Next-Gen UI)模块的学习和实践。NGUI是一个轻量级的UI系统,专为Unity3D游戏开发者设计,旨在简化游戏内的用户界面开发,提高性能。文档主要讲解了以下几个核心知识点: 1. **UISprite**: - 在Unity中使用精灵(Sprite)时,需要将其打包至Atlas(纹理集合),因为NGUI要求精灵预先整合在图集中以优化渲染性能。NGUI提供了内置的案例图集,也可以自定义创建。创建图集会生成一个纹理、材质和预设,以减少DrawCall次数,优化图形绘制效率。 2. **DrawCall**: - DrawCall是CPU调用图形绘制接口(OpenGL或Direct3D)进行渲染的基本单元。过多的DrawCall会导致CPU资源占用增加,影响性能。优化之一是合并小的DrawCall,通过Atlas技术实现纹理合并,降低CPU的准备工作负担。 3. **UIButton组件**: - UIButton是NGUI中的一个基础控件,由Sprite和Label组成,提供点击事件处理。它包括: - Target:点击效果的作用对象。 - DragOver:当物体经过按钮时触发的事件。 - Transition:效果过度的时间。 - Colors和Sprites:分别对应按钮不同状态的颜色和精灵图像。 - OnClick:点击事件的回调,可通过绑定脚本来实现。 4. **事件处理与脚本绑定**: - 对于UIButton的onClick事件,有三种常见的处理方式: - 1. 直接重写Unity的内置函数,如`void OnClick() { Debug.Log("按钮被按下"); }`。 - 2. 使用ButtonMessage组件传递事件,通过`public void ButtonClick() { ... }`来接收事件。 - 3. 委托监听,将事件处理逻辑放在单独的委托函数中,并通过UIRoot或其他合适的游戏对象绑定。 5. **脚本位置**: - 为了正确地触发事件,脚本通常绑定在UIRoot(UI树的根节点)上,确保事件能够传播到所有关联的UI元素。 这份文档为学习者提供了Unity3D NGUI的基础知识和实践经验,通过实际操作和理解这些核心概念,开发者可以更高效地创建和管理游戏内的交互式用户界面,从而提升游戏性能和用户体验。
2018-06-10 上传
Unity 3D NGUI实战教程 完整版 第1章 初识NGUI 1.1 游戏UI开发介绍 1.1.1 什么是游戏UI 1.1.2 UI为何如此重要 1.1.3 UI开发的流程 1.1.4 UI开发的难点 1.2 什么是NGUI 1.2.1 NGUI插件介绍 1.2.2 NGUI的强大优势 第2章 NGUI基础 2.1 导入NGUI插件 2.1.1 NGUI版本介绍 2.1.2 NGUI的下载和购买 2.1.3 导入NGUI插件应用 2.1.4 导入常见问题 2.2 认识基本的UI资源 2.2.1 什么是UI精灵(Sprite) 2.2.2 什么是UI图集(Atlas) 2.2.3 什么是UI贴图(Texture) 2.2.4 什么是UI标签(Label) 2.2.5 什么是UI字体(Font) 2.3 制作第一个UI图集 2.3.1 学会解剖UI的资源结构 2.3.2 如何导入切好的美术资源 2.3.3 用Atlas Maker制作图集 2.4 制作第一个UI字体 2.4.1 为什么要制作UI字体 2.4.2 静态字体和动态字体 2.4.3 制作静态字体介绍 2.4.4 制作动态字体介绍 2.5 创建第一个UI 2.5.1 创建一个2D UI 2.5 .2 创建一个3D UI 2.5.3 了解UIRoot、UIPanel和UICamera组件 2.6 2DUI和3DUI的工作原理 2.6.1 2DUI的工作原理 2.6.2 3DUI的工作原理 2.6.3 如何判断该选择哪一种UI 2.7 深度(Depth)概念 2.7.1 强化对深度的理解 2.7.2 小心相机的深度 第3章 核心组件 3.1 什么是UI控件 3.2 制作精灵(UISprite) 3.2.1 怎样判断是否应该使用精灵 3.2.2 创建精灵 3.2.3 Sprite组件的设置 3.3 制作标签(Label) 3.3.1 怎样判断是否应当使用标签 3.3.2 创建标签 3.3.3 Label的文字设置 3.4 制作UI纹理(UITexture) 3.4.1 什么情况下使用UITexture 3.4.2 创建纹理 3.4.3 纹理的设置 3.5 制作按钮(Button) 3.5.1 怎样判断应该使用按钮 3.5.2 创建按钮 3.5.3 核心组件BoxCollider 3.5.4 核心组件UIButton 3.5.5 制作按钮的放缩动画 3.5.6 制作按钮的偏移动画 3.5.7 制作按钮的旋转动画 3.5.8 添加按钮单击音效 3.5.9 任何事物都可以变成按钮,不仅仅是UI 3.6 制作进度条(UISlider) 3.6.1 怎样判断是否应当使用进度条 3.6.2 创建进度条 3.6.3 核心组件UISlider设置 3.6.4 进度条的BoxCollider说明 3.7 制作输入框(Input) 3.7.1 怎样判断是否应当使用输入框 3.7.2 创建输入框 3.7.3 核心组件Input设置 3.7.4 输入框使用的一些注意事项 3.8 制作滚动视图(ScrollView) 3.8.1 怎样判断是否应当使用滚动视图 3.8.2 创建滚动视图 3.8.3 滚动视图核心组件UIPanel 3.8.4 滚动视图核心组件UIScrollView 3.8.5 创建一个拖动条 3.8.6 拖动条说明 3.8.7 让视图内的内容可以被拖动 3.8.8 制作滚动视图时的注意事项 3.9 制作复选框(Toggle) 3.9.1 怎样判断是否应当使用复选框 3.9.2 创建复选框 3.9.3 复选框的核心组件UIToggle 3.10 制作下拉菜单(PopupList) 3.10.1 怎样判断是否应当使用下拉菜单 3.10.2 创建下拉菜单 3.10.3 显示当前选中的选项 3.10.4 下拉菜单核心组件PopupList 3.10.5 制作下拉菜单的注意事项 第4章 UI动画 4.1 常见的两种UI动画介绍 4.1.1 要区分UI动画和UI特效两个概念 4.1.2 关于Tween动画 4.1.3 关于Animation动画 4.2 渐隐渐现动画(透明度动画) 4.2.1 透明度动画的介绍和应用 4.2.2 使用透明度动画TweenAlpha 4.2.3 使用透明度动画的注意点 4.3 颜色变化动画(变色动画) 4.3.1 变色动画的介绍和应用 4.3.2 使用颜色动画TweenColor 4.3.3 使用颜色动画的注意点 4.4 位置变换动画(位移动画) 4.4.1 位移动画的介绍和应用 4.4.2 使用位移动画TweenPosition 4.4.3 使用位移动画的注意点 4.5 旋转变化动画(旋转动画) 4.5.1 旋转动画的介绍和应用 4.5.2 使用旋转动画TweenRotation 4.5.3 使用旋转动画的注意点 4.6 大小变化动画(放缩动画) 4.6.1 放缩动画的介绍和应用 4.6.2 使用放缩动画TweenScale 4.6.3 使用放缩动画的注意点 4.7 Tween动画总结 4.8 动画控制组件UIPlayTween 4.8.1 为什么要用UIPlayTween 4.8.2 动画核心组件UIPlayTween讲解 4.8.3 使用UIPlayTween的注意事项 4.9 动画控制组件UIPlayAnimation 4.9.1 为什么要用UIPlayAnimation 4.9.2 为UI添加Animation组件 4.9.3 动画核心组件UIPlayAnimation讲解 4.9.4 使用UIPlayAnimation注意事项 第5章 其他组件 5.1 使用Toggle制作页签 5.1.1 页签的工作原理 5.1.2 一个完整的页签界面 5.1.3 制作两个页签按钮 5.1.4 使用ToggleObjects来记录页签内容 5.1.5 制作页签注意事项 5.2 拖动摄像机来浏览超大界面 5.2.1 拖动相机功能的介绍和应用 5.2.2 核心原理和组件介绍 5.2.3 拖动相机浏览超大界面的注意事项 5.3 使用Grid自动排列UI 5.3.1 自动排列UI的应用 5.3.2 自动排列UI核心组件Grid介绍 5.4 使用DragObject直接拖动物体 5.5 让玩家通过拖动自由改变控件大小 5.6 制作序列帧精灵动画(SpriteAnimation) 5.6.1 什么是序列帧精灵动画 5.6.2 SpriteAnimation组件 第6章 NGUI实战进阶 6.1 UI开发核心问题--UI随屏幕自适应 6.1.1 屏幕分辨率对UI适配的影响 6.1.2 主流设备的屏幕分辨率 6.1.3 自适应核心组件Anchor的使用 6.1.4 使用Anchor的注意事项 6.1.5 正式开发UI之前必须明确的几个问题 6.2 UI元素的相对自适应 6.2.1 什么是UI元素的相对自适应 6.2.2 Anchors的介绍及使用 6.2.3 使用Anchors的范例:背景图的全屏适配 6.2.4 使用Anchors的注意事项 6.3 多摄像机同时协作运行 6.3.1 摄像的渲染层的概念 6.3.2 多摄像机协作的应用范围 6.3.3 如何创建多个UI摄像机 6.3.4 多摄像机协作的注意事项 6.4 巧用九宫格以减少UI资源量 6.4.1 项目安装包大小对项目的影响