作品简介

NGUI是专门针对Unity引擎、用C#语言编写的一套插件,它已经成为了目前世界上应用最广、最成熟的Unity制作UI的插件,完美地弥补了Unity引擎原生GUI系统和NewGUI系统的各种不足。程序员可以利用它提供的一整套UI框架和事件通知系统来进行自己项目的UI设计和制作。本书不仅讲解了必知必会的NGUI的基础知识,更是以项目实战为目的,涵盖了大量的项目实战中的经验之谈和技巧总结,用以帮助读者达到学以致用的目的。

本书的主要内容:初识NGUI、UI开发的流程、NGUI强大优势、制作第一个UI图集、创建一个3D UI、查看和管理UI的深度、制作基础的UI控件、让UI动起来——UI动画、NGUI进阶、使用Panel管理面板、NGUI实战进阶、UI开发核心问题——UI随屏幕自适应、实战开发中UI资源制作标准、跨平台制作UI资源、UI结构设计、UI代码的设计和优化、项目案例实战分析、背包界面的制作等核心技术,最后用一章归纳了NGUI常见疑难问题,以便读者遇到问题时可以随时参考。

本书适合新上手的Unity客户端程序员、需要做UI的Unity程序员、想自学Unity做独立游戏开发的人员,以及大专院校相关专业的师生学习用书和培训学校的教材。

高雪峰:现在为游戏制作人,曾经担任游戏策划、主策划、Unity程序员等职位,开发过端游、页游、手游等游戏项目,带团队做过多个商业项目,对游戏的研发过程具有丰富的经验和实战技能。对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 项目安装包大小对项目的影响
  • 6.4.2 UI资源量对资源包大小和内存的影响
  • 6.4.3 什么是九宫格UI
  • 6.4.4 如何让美术提供合适的九宫格UI资源
  • 6.4.5 如何在NGUI中划分九宫格
  • 6.4.6 如何使用九宫格UI
  • 6.4.7 去掉Mipmap以进一步降低资源包大小和内存占用
  • 6.5 实战开发中UI资源制作标准
  • 6.5.1 为什么要设定UI资源制作标准
  • 6.5.2 资源制作标准设定建议
  • 6.5.3 程序如何保证UI资源的分辨率不失真
  • 6.5.4 针对各大平台设置单独的尺寸和格式
  • 6.6 UI事件监听的击穿
  • 6.6.1 什么是UI事件监听的击穿
  • 6.6.2 如何避免和解决UI事件监听的击穿
  • 6.6.3 事件监听遮挡的妙用
  • 6.7 开发之前的思考——UI结构设计
  • 6.7.1 什么是UI结构设计
  • 6.7.2 UI结构设计遵循的一些要点
  • 6.7.3 需要的时候,分场景以减轻内存负担
  • 第7章 用代码深度控制UI
  • 7.1 代码操作NGUI的原理
  • 7.1.1 物体与组件的概念
  • 7.1.2 怎样用代码操作NGUI
  • 7.1.3 获取组件的几种方法
  • 7.1.4 迅速判断可以修改的成员
  • 7.2 动态加载UI元素
  • 7.2.1 为什么游戏中会用到动态加载UI元素
  • 7.2.2 擅用UI元素的Prefab
  • 7.2.3 将一个物体设置为另一个物体的子物体——NGUITools.AddChild()方法
  • 7.2.4 NGUITools.AddChild()和Instantiate的区别
  • 7.3 擅用EventDelegate事件委托
  • 7.3.1 什么是EventDelegate事件委托
  • 7.3.2 事件委托的用法
  • 7.3.3 哪些地方可以使用事件委托
  • 7.4 巧用EventTrigger组件
  • 7.4.1 什么是EventTrigger组件
  • 7.4.2 EventTrigger用法
  • 7.5 常用组件的功能调用
  • 7.5.1 UILabel
  • 7.5.2 UISprite
  • 7.5.3 UITexture
  • 7.5.4 UIButton
  • 7.5.5 UIGrid
  • 7.5.6 UISlider
  • 7.5.7 UIToggle
  • 7.5.8 UIInput
  • 7.5.9 UIPanel
  • 7.5.10 UICamera
  • 7.6 动画的控制
  • 7.6.1 为什么要把动画单独提取出来
  • 7.6.2 控制Tween动画
  • 7.6.3 关于PlayTween和PlayAnimation
  • 第8章 实用案例演示
  • 8.1 角色头像状态栏制作
  • 8.1.1 示意图和需求分析
  • 8.1.2 设计并制作UI
  • 8.1.3 设计并编写代码
  • 8.2 场景加载的进度条界面制作
  • 8.2.1 为什么要做这个界面
  • 8.2.2 异步加载的概念
  • 8.2.3 制作一个单独的加载界面场景
  • 8.2.4 设计并编写代码
  • 8.3 技能快捷栏的制作
  • 8.3.1 示意图和需求分析
  • 8.3.2 设计并制作UI
  • 8.3.3 设计并编写代码
  • 8.4 角色头顶血条的跟随
  • 8.4.1 角色头顶血条的跟随分析
  • 8.4.2 制作血条的UI
  • 8.4.3 设计并编写代码
  • 8.5 NGUI多语言切换的实现
  • 8.5.1 什么是本地化
  • 8.5.2 NGUI本地化的原理
  • 8.5.3 本地化案例演示
  • 第9章 常见疑难问题解答
  • 9.1 关于NGUI版本问题
  • 9.2 导入NGUI资源包出错
  • 9.3 如何创建两个UIRoot
  • 9.4 如何让粒子在界面上正确显示
  • 9.5 为什么在父物体上增加透明度动画,子物体没有跟着变化
  • 9.6 为什么动画播放一遍之后无法再次正常播放
  • 9.7 为什么3DUI模式下,UI资源的尺寸Snap后和屏幕的大小比例不一致
  • 9.8 为什么UI不受灯光影响
  • 9.9 为什么3D模型放到UIRoot下就变得看不见了
  • 9.10 为什么UI单击后无法播放音效
  • 9.11 为什么Depth更大的图片反而被Depth小的图片遮住
  • 9.12 怎样判断点中的东西是UI
  • 9.13 为什么Label的文字始终不够清晰、明亮
  • 9.14 为什么创建的物体有BoxCollider却无法接收事件
  • 9.15 为什么改变了控件的父物体,导致了显示层级错乱
  • 9.16 关于ScrollView滑动的问题
  • 笔记栏
展开全部