产品特色
编辑推荐
适读人群 :游戏开发爱好者、学生,相关虚拟现实开发和应用人员。 Unity官方标准教程。目前世界范围内unity用书已经超过600万。让普通人也成为游戏开 发 者,是unity的愿望,所以unity以简单易用,体验友好著称。本书得到unity大力支持,并作为教育认证的制定教材使用。
内容简介
Unity是一 款功能强大且简单易用的游戏开发和虚拟现实开发平台软件。使用Unity可以把各种游戏素材或者虚拟现实素材,比如模型、贴图、动画等进行整合,结合Unity完 美的引擎,和友好的程序开发平台,能制作出适合各种平台发布的游戏或者虚拟现实应用。
本书共设计了15 章内容,包含Unity 软件使用基础、各项组件使用、程序开发基础和实例、各种平台发布技能等。在本书* 14 章还举了一个典型的游戏制作项目,让读者可以从零开始一步步制作出一 款游戏。* 15 章则介绍了Unity 2017 版的新特性及使用。
本书适合对Unity感兴趣,对游戏开发感兴趣的读者,也适合相关专业和院校作为游戏开发教材。
作者简介
刘杨
国家动漫园技术研发工程师
从业经历
Unity User Group天津站组委会主 席,获得Unity Certified Developer技术认证,在《天津科技》2015年第3期杂志发表了技术性论文。
作为80后的一代身残志强的有志青年,从事软件开发多年,对计算机编程偏爱有加,在虚拟现实、增强现实领域有深入研究,开发完成的Unity项目多达几十项。
2013年,独立完成了《中新生态城国家动漫园虚拟漫游》、《红橡虚拟样板间》 iPad版本以及AR版本项目。
2014年,先后完成了《英轩重工集团虚拟交互系统》、《天津警备区虚拟漫游交互系统》项目制作。
2015年,完成了《泰达国际心血管病医院网站3D交互系统》,受到了泰达国际心血管病医院的一致好评;同年又在OCULUS DK2平台上自主研发发布了《杨柳青古镇虚拟漫游》项目。
2016年,在HTC VIVE平台完成了《模拟火灾逃生》、《模拟地铁维修》项目的开发工作。
2017年,完成了《医疗器械3D网上展馆》网页版项目、《未来智能修井车》Android版本项目。
史明
亮风台信息科技有限公司 产品经理
数字艺术家、作者、设计师、游戏制作人。
互联网行业从业10余年,从软件产品到硬件产品都有涉猎,经历了从PC端时代到移动端时代的剧烈迁移。致力于设计与程序的融合,创作出色的数字艺术作品。
主要作品有腾讯《袋鼠跳跳3D》AR、晨光《大鱼活了》AR、独立游戏《Back to the light》。参展第三届东京画廊绿校年展、北京大声展。igotU旅行记录器硬件产品设计,以及751 Live Tank艺术装置,曾参与设计“igotU‘旅行记录器等可穿戴设备。
内页插图
目录
第1章 认识Unity
1.1 Unity的发展
1.2 用Unity开发的经典游戏案例
1.3 Unity在VR AR领域里的应用
1.3.1 用Unity 能轻松构建VR
1.3.2 Unity 对于AR VR行业的影响
1.4 如何安装Unity软件
动手操作:下载并安装Unity软件
动手操作:注册Unity账号
1.5创建* 一个Unity项目工程
动手操作:Unity新建工程
1.6 Unity Asset Store(Unity资源商店)
动手操作:使用Asset Store资源商店
第 2章 Unity的操作界面
2.1 界面布局
2.1.1 Hierarchy层级视图
2.1.2 Project项目视图
2.1.3 Inspector检视视图
2.1.4 Game游戏视图
2.1.5 Scene场景视图
2.1.6 Console控制台视图
2.2 菜单栏
动手操作:Scene场景视图的操作
动手操作:Project Settings的使用方法
动手操作:导入 导出资源包
动手操作:查看Unity Manual和Scripting Reference
2.3 工具栏
动手操作:改变游戏场景
第3章 Unity场景设定
3.1 资源导入流程
动手操作:3D模型(含动画)的FBX导出
3.2 组件的使用
3.2.1 光源的使用
3.2.2 摄像机的使用
3.2.3 角色控制器
动手操作:建立角色控制器
3.2.4 天空盒
动手操作:导入天空盒
3.2.5 雾效果与水效果
动手操作:添加自然效果
3.2.6 音效
动手操作:添加音效
第4章 Unity物理引擎
4.1 刚体
4.2 碰撞体
4.3 关节
4.4 力场
4.5 布料
动手 操作:布料组件的应用(毯子效果)
4.6 物理引擎实例
动手操作:物理碰撞的应用
第5章 Shuriken粒子系统
5.1 Shuriken粒子系统概述
5.2 Shuriken粒子系统参数讲解
5.2.1 Initial(初始化模块)
5.2.2 Emission (发射模块)
5.2.3Shape(形状模块)
5.2.4 Velocity over Lifetime(生命周期速度模块)
5.2.5Color over Lifetime(生命周期颜色模块)
5.2.6 Size Over Lifetime(生命周期粒子大小模块)
5.2.7 Renderer(粒子渲染器模块)
5.2.8 Particile Effect(粒子效果面板)
5.3 Shuriken粒子系统特效插件
5.3.1 Ultimate VFX v2.7
5.3.2 Realistic Effects Pack 4
5.3.3 Magic Arsenal
5.4 Shuriken粒子系统案例
动手操作:运用粒子系统制作太阳日冕效果
动手操作:制作瀑布效果
动手操作:制作卡通爆炸效果
第6章 Mecanim动画系统
6.1 Mecanim动画系统概述
动手操作:准备Unity-chan人物
6.2 创建和配置Avatar
6.2.1创建Avatar
6.2.2配置Avatar
6.3 设置Animator Controller(动画控制器)
动手操作:设置动画控制器
6.4 设置Blend Tress(动作混合树)
动手操作:设置动画混合树
6.5 控制人物走路方向
第7章 Unity光照贴图技术
7 .1 光照贴图技术示例
动手操作:简单的光照渲染
7.2烘焙相关参数设置
7.2.1 Object(物体)参数设置
7.2.2 Light(光源)参数设置
7.2.3 Lighting视图下Scene选项卡
7.2.4 Lightmaps(光照贴图信息)选项卡
7.3 Real time GI
7.3.1 全局光照介绍
7.3.2 不同的GI绘图模式
7.4 Light map
7.5 GI与Lightmap
7.6光照贴图技术实例
动手操作:制作场景光照实例
第8章 C#编程基础
8.1 Hello World!
动手操作:我的* 一个C#程序
8.2 Unity第三方脚本编辑器
动手操作:更改脚本编辑器
8.3 MonoBehaviour类
8.3.1 必然事件
8.3.2 Collision事件
8.3.3 Trigger事件
8.4 GameObject类
8.4.1 Instantiate实例化
8.4.2 Destory销毁
8.4.3 GetComponent获取组件
8.4.4 SetActive显示 隐藏游戏对象
8.5 Transform类
动手操作:控制物体移动和旋转
8.6 Rigidbody类
8.7 Time类
动手操作:每隔5秒前进2米
8.8 Random类和Mathf类
8.8.1 Mathf类
动手操作:小球来回摆动
8.8.2 Random类
动手操作:随机改变颜色
8.9 Coroutine 协同
动手操作:协同程序
8.10 游戏实例: 扔骰子
第9章 Unity 5图形用户界面——UGUI
9.1UGUI图形用户界面系统
动手操作:将图片设置为Sprite
9.2 UGUI控件系统介绍
9.2.1 Canvas画布
9.2.2 Text 文本
动手操作:制作时钟
9.2.3 Image图像
动手操作:制作进度条
9.2.4 Raw Image原始图像
动手操作:RawImage播放视频
9.2.5 Button按钮
动手操作:Button的使用
9.2.6 Toggle 开关
动手操作:利用Toggle来开关音乐
9.2.7 Slider滑动条
动手操作:利用Slider滑动条来调整音量
9.2.8 InputField文本框
9.3Rect Transform矩形变换
9.3.1 Pivot 轴心点
9.3.2 Anchors 锚框
9.4 UGUI界面布局实例
动手操作:我的* 一个“游戏主菜单”界面
* 10章Shader着色器基本知识
10.1认识Shader
动手操作:制作* 一个Shader
10.2 Shader基本语法
10.3 着色器的两种自定义
10.3.1 Surface Shader(表面着色器)
10.3.2 Vertex and Fragment Shader(顶点和片段着色器)
10.4 Unity Shader案例:制作金属材质
* 11章游戏资源打包
11.1 认识AssetBundle
11.2 创建AssetBundle
动手操作:创建AssetBundle
11.3 下载AssetBundle
11.4 AssetBundle加载和卸载
动手操作:加载和卸载AssetBundle
* 12章 跨平台发布
12.1 平台发布设置
12.2发布单机版游戏
12.3发布Android版游戏
动手操作:Java SDK的环境配置
动手操作:安装Android Studio
动手操作:配置Unity
动手操作:发布Android
12.4发布iOS游戏
动手操作:安装XCode
动手操作:发布iOOS
12.5发布WebGL
动手操作:发布WebGL
12.6 发布虚拟现实平台
动手操作:发布Oculus平台
* 13章 Unity Services(中文翻译Unity服务)
13.1 Unity Services(中文翻译Unity服务)介绍
动手操作:在Unity开 发 者控制面板创建项目
13.2 Unity Ads(中文翻译Unity广告)
动手操作:使用Unity Ads(Unity广告)(中文翻译)
13.3 Unity Analytics(中文翻译Unity数据分析)
动手操作:使用Unity Analytics(Unity数据分析)(中文翻译)
13.4 Unity Certified(中文翻译Unity认证)
13.5 Unity Cloud Build(Unity云构建)
13.6 Unity Collaborate(Unity协同服务)
动手操作:使用Unity Collaborate
13.7 Unity IAP(Unity应用程序内置购买)
动手操作:使用Unity IAP
13.8 Unity Performance Reporting(Unity性能报告)
动手操作:使用Unity Performance Reporting
* 14章Unity综合案例——炸弹人(双人战)
14.1 游戏介绍
14.2建立项目及准备素材
14.3场景搭建
14.4键盘控制炸弹人的行为
14.5投炸弹的交互制作
14.6创建爆炸
14.7让爆炸变得更大
14.8连锁反应
14.9炸墙壁
14.10 炸弹人死亡
14.11 游戏结束界面
14.12 本章小结
* 15章 Unity 2017版的新特性及使用
15.1 Unity 2017版概述.
15.2 Timeline(时间轴)
动手操作: Timeline 的使用
15.3 Cinemachine(智能摄像机)
动手操作: Cinemachine的使用
15.4 Post-processing(后期处理)
15.4.1 Antialiasing(抗锯齿)
15.4.2 Ambient Occlusion(环境光遮蔽)
15.4.3 Screen Space Reflection(屏幕空间反射)
15.4.4 Depth of Field(景深特效)
15.4.5 Motion Blur(运动模糊)
15.4.6 Eye Adaptation(人眼调节)
15.4.7 Bloom(泛光特效)
15.4.8 Color Grading(颜色分级)
15.4.9 User Lut(用户调色预设)
15.4.10 Chromatic Aberration(色差)
15.4.11 Grain(颗粒)
15.4.12 Vignette(渐晕)
附录 C#基本语法
一、变量
动手操作:使用变量
二、运算符
动手操作:使用运算符
三、控制语句
《Unity 5.X 2017标准教程》内容简介 《Unity 5.X 2017标准教程》是一本面向Unity初学者和进阶者的综合性指南,旨在帮助读者系统地掌握Unity游戏开发的核心技术和工作流程。本书紧密结合Unity 5.X和2017版本的特性,通过理论讲解与实践案例相结合的方式,引领读者一步步踏入游戏开发的奇妙世界。 第一部分:Unity基础入门 本部分是为零基础读者量身打造的学习起点,将带领大家熟悉Unity开发环境,建立对游戏开发的基本认知。 第一章:Unity开发环境与界面导览 Unity Hub的安装与管理: 详细介绍Unity Hub的安装步骤,如何通过它下载和管理不同版本的Unity编辑器。 Unity编辑器的安装与配置: 指导用户完成Unity编辑器的安装,并对项目设置、偏好设置等进行基础讲解,确保读者能顺利进入开发环境。 Unity项目结构解析: 深入剖析Unity项目的组织方式,包括Assets文件夹、Packages、Scenes等核心概念,让读者理解项目文件之间的关系。 Unity编辑器主界面功能介绍: 全面解析Unity编辑器的各个重要窗口,如Scene视图、Game视图、Hierarchy窗口、Project窗口、Inspector窗口,并讲解它们在开发过程中的作用。 常用工具的实用技巧: 介绍Scene视图中的移动、旋转、缩放工具,以及Inspector窗口中组件的添加、删除与属性调整等基础操作,为后续学习打下坚实基础。 第二章:初识Unity中的基本概念 GameObject与Component: 详细阐述Unity最核心的“万物皆GameObject”的设计理念,以及Component(组件)如何赋予GameObject行为和特性。通过创建简单的GameObject并添加Transform、Mesh Renderer等组件,直观展示组件的工作原理。 Transform组件详解: 深入讲解Transform组件的position(位置)、rotation(旋转)和scale(缩放)属性,并通过实例演示如何用代码或Inspector来控制GameObject的变换。 理解坐标系: 区分世界坐标系、局部坐标系和屏幕坐标系,并讲解它们在Unity中的应用场景,例如物体在场景中的摆放、相机视角控制等。 Prefabs(预制体)的重要性: 介绍Prefabs的概念,以及它们在提升开发效率、复用资源方面的巨大作用。学习如何创建、编辑和实例化Prefabs。 Assets(资源)的导入与管理: 讲解如何在Unity中导入各种类型的资源,如模型、纹理、音频、脚本等,以及如何在Project窗口中进行有效的组织和管理。 第三章:Unity中的基本脚本编程 C脚本语言入门: 简要介绍C语言的基础语法,包括变量、数据类型、运算符、流程控制语句(if-else, for, while)等,为后续的Unity脚本编写奠定基础。 MonoBehaviour类与生命周期函数: 深入理解MonoBehaviour作为Unity脚本核心类的作用,并详细讲解Awake、Start、Update、FixedUpdate、LateUpdate等关键生命周期函数,以及它们在游戏逻辑中的触发时机。 编写第一个Unity脚本: 通过实际案例,指导读者编写控制GameObject移动、旋转的简单C脚本,并讲解如何在Inspector中将脚本组件附加到GameObject上。 变量的公开与隐藏: 学习如何使用public和private关键字来控制变量的访问级别,以及如何利用[SerializeField]属性在Inspector中显示私有变量,方便调试和参数调整。 常用的Debug.Log函数: 介绍Debug.Log函数在调试过程中的重要性,如何通过它来输出信息,帮助定位和解决问题。 第二部分:核心功能与开发技巧 本部分将深入讲解Unity的核心功能模块,帮助读者构建更复杂、更具交互性的游戏。 第四章:Unity的图形渲染与材质 相机(Camera)的使用: 讲解相机的种类(Perspective, Orthographic),以及Projection(投影)、Clear Flags(清除标志)、Culling Mask(剔除遮罩)等重要属性的设置,实现不同的视觉效果。 光照系统: 介绍Unity中的光源类型(Directional, Point, Spot, Area),以及它们的工作原理。讲解Lighting Settings(光照设置),包括全局光照(Global Illumination)的基本概念和烘焙过程(Unity 5.X的Legacy GI和Unity 2017的Progressive Lightmapper),以及光照探针(Light Probes)的应用。 材质(Material)与着色器(Shader): 详细讲解材质的概念,以及如何为模型赋予不同的外观。介绍Standard Shader(标准着色器)的各项参数,如Albedo, Metallic, Smoothness, Normal Map等。初步了解Shader的作用,以及如何使用Unity内置的Shader Graph(在较新版本中)或编写简单Shader。 纹理(Texture)的应用: 讲解不同纹理类型(Diffuse, Normal, Specular, Emission等)的作用,以及UV Mapping(UV映射)的概念,如何将2D纹理贴附到3D模型上,并学习纹理的缩放、平铺等设置。 天空盒(Skybox): 介绍如何设置天空盒,营造不同的场景氛围,以及天空盒在渲染管线中的作用。 第五章:Unity中的物理引擎 Rigidbody组件: 讲解Rigidbody组件如何让GameObject获得物理属性,如质量、重力、阻力等。学习如何通过代码或Inspector来施加力(AddForce)、扭矩(AddTorque),实现物体的运动和碰撞。 Collider组件: 介绍各种Collider类型(Box Collider, Sphere Collider, Capsule Collider, Mesh Collider)的用途,以及它们如何定义物体的碰撞边界。讲解Is Trigger(触发器)的设置,以及如何区分碰撞(Collision)和触发(Trigger)。 物理材质(Physic Material): 讲解Physic Material如何影响碰撞体的摩擦力(Friction)和弹性(Bounciness),实现不同材质表面的交互效果。 碰撞与触发事件: 学习如何通过脚本监听碰撞事件(OnCollisionEnter, OnCollisionStay, OnCollisionExit)和触发事件(OnTriggerEnter, OnTriggerStay, OnTriggerExit),实现游戏中的各种交互逻辑,例如角色与地面碰撞、道具拾取等。 物理层(Physics Layers)与碰撞矩阵: 介绍Physics Layers的概念,以及如何通过碰撞矩阵(Layer Collision Matrix)来控制不同层级的物体之间的碰撞关系,优化性能和实现特定的物理交互。 第六章:Unity的用户交互与输入 输入管理器(Input Manager): 详细讲解Unity的Input Manager,如何设置和管理键盘、鼠标、手柄等输入设备的轴(Axes)和按钮(Buttons)。 获取输入值: 学习如何使用`Input.GetAxis()`和`Input.GetButton()`等函数来获取输入设备的输入状态,并将其应用于游戏控制。 鼠标输入: 讲解如何获取鼠标的位置(`Input.mousePosition`)、点击事件(`Input.GetMouseButtonDown`, `Input.GetMouseButtonUp`, `Input.GetMouseButton`)以及鼠标滚轮(`Input.GetAxis("Mouse ScrollWheel")`)。 键盘输入: 讲解如何检测按键状态(`Input.GetKey`, `Input.GetKeyDown`, `Input.GetKeyUp`)。 触摸输入(移动端): 简要介绍在移动端如何获取触摸点的位置、数量和触摸状态。 UI交互基础: 介绍Unity UI系统(UGUI)的基础知识,包括Canvas、EventSystem、RectTransform等。学习如何创建按钮(Button)、文本(Text)、图像(Image)等UI元素,并实现UI元素的点击响应。 第三部分:高级开发技术与项目实践 本部分将带领读者深入Unity的高级功能,并通过实际项目案例来巩固所学知识,提升实际开发能力。 第七章:Unity的动画系统 Animator组件与Animator Controller: 讲解Animator组件如何控制GameObject的动画播放,以及Animator Controller作为动画状态机的作用。 动画剪辑(Animation Clips): 学习如何导入或创建动画剪辑,包括骨骼动画、模型动画等。 动画状态机(State Machine)的创建与管理: 详细讲解如何构建复杂的动画状态机,包括状态(States)、过渡(Transitions)、参数(Parameters)和条件(Conditions),实现角色在不同状态间的平滑切换(如站立、行走、跳跃、攻击)。 动画事件(Animation Events): 学习如何在动画播放过程中触发特定的脚本函数,例如在攻击动画的特定帧播放音效或触发伤害判定。 Mecanim系统的进阶: 介绍Avatar、Root Motion(根运动)等概念,以及如何利用Avatar Mask实现更精细的动画控制。 第八章:Unity的UI系统(UGUI)深入 Canvas模式: 讲解Screen Space - Overlay, Screen Space - Camera, World Space等Canvas渲染模式的区别与应用。 常用UI控件深入: 详细介绍Slider(滑块)、Toggle(开关)、Dropdown(下拉菜单)、Scroll Rect(滚动视图)、Input Field(输入框)等常用UI控件的使用方法和事件处理。 布局系统: 讲解Horizontal Layout Group, Vertical Layout Group, Grid Layout Group等布局组件,如何自动排布UI元素,实现响应式布局。 UI的性能优化: 介绍Canvas Batching、UI顶点数量控制等UI性能优化的关键技巧。 创建复杂UI界面: 通过实例,指导读者设计和实现具有复杂交互的UI界面,如游戏菜单、道具栏、血条显示等。 第九章:场景管理与资源加载 场景(Scene)的加载与卸载: 学习如何通过代码加载新场景(`SceneManager.LoadScene`),以及异步加载场景(`SceneManager.LoadSceneAsync`)以避免卡顿。 跨场景的对象传递: 介绍DontDestroyOnLoad方法,以及如何实现数据在不同场景之间的共享。 资源加载(AssetBundles): 详细讲解AssetBundles的概念,如何打包和加载外部资源,以及它在动态内容更新、降低初始包体大小方面的优势。 Addressables(在Unity 2017及更高版本中): 介绍Addressables资源管理系统,它提供了比AssetBundles更便捷、更强大的资源管理和加载方案。 第十章:粒子系统(Particle System) 粒子系统的基本概念: 讲解粒子系统的作用,以及它在实现特效(如火焰、烟雾、爆炸、魔法效果)中的重要性。 主模块(Main Module): 详细介绍Duration(持续时间)、Looping(循环)、Start Lifetime(起始生命周期)、Start Speed(起始速度)、Start Size(起始尺寸)、Start Color(起始颜色)、Gravity Modifier(重力修饰)等核心参数。 发射模块(Emission Module): 讲解Rate over Time(每秒发射率)和Bursts(爆发)等发射模式。 形状模块(Shape Module): 介绍不同发射形状(Sphere, Cone, Box, Circle)及其参数。 力场模块(Force over Lifetime Module): 讲解如何随时间改变粒子的速度和方向。 渲染模块(Renderer Module): 讲解如何设置粒子贴图(Render Mode)、材质,以及粒子排序(Sorting Fudge)等。 创建与优化粒子特效: 通过多个经典特效案例(如火焰、闪电、雨滴),指导读者从零开始创建逼真的粒子效果,并学习粒子系统的性能优化技巧。 第十一章:音频系统 AudioSource组件: 讲解AudioSource组件如何播放声音,以及PlayOnAwake、Loop、Volume、Pitch等参数的设置。 AudioClip资源: 讲解AudioClip资源的使用,如何导入和管理音频文件。 AudioListener组件: 介绍AudioListener作为声音的接收者,以及它的重要性。 3D空间音频: 讲解Min Distance(最小距离)和Max Distance(最大距离)等参数,实现声音在3D空间中的衰减效果。 Audio Mixer(音频混合器): 介绍Audio Mixer如何组织和控制游戏中的各种音效,实现音量、声相、混响等效果的全局调整。 音频的触发与管理: 学习如何通过脚本播放背景音乐、音效,并实现音效的随机播放、淡入淡出等效果。 第十二章:项目实践——制作一款小型游戏 游戏设计概念: 讲解游戏设计的初步构思、核心玩法、关卡流程等。 场景搭建与美术资源整合: 学习如何规划和搭建游戏场景,导入和使用模型、纹理、UI等美术资源。 核心玩法实现: 结合前面章节学到的知识,实现游戏角色的移动、交互、攻击、得分、生命值等核心玩法逻辑。 UI界面设计与实现: 设计并实现游戏的主菜单、HUD(Head-Up Display)、游戏结束界面等。 音效与音乐的配合: 为游戏添加背景音乐和各种音效,提升游戏体验。 关卡设计与关卡流程控制: 搭建多个游戏关卡,并实现关卡之间的切换和流程控制。 游戏测试与优化: 进行游戏测试,找出Bug并进行修复,对游戏性能进行初步优化。 附录: Unity常用快捷键列表 C基础语法回顾 游戏开发进阶方向建议 《Unity 5.X 2017标准教程》通过循序渐进的教学方式,理论与实践并重,旨在帮助读者建立扎实的Unity开发基础,掌握常用的游戏开发技术,并能够独立完成简单的游戏项目。本书内容丰富,讲解详细,是Unity学习者不可多得的参考书籍。