本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
内容简介 |
商品基本信息,请以下列介绍为准 | |
图书名称: | 《Unity 3D\2D手机游戏开发:从学习到产品(第4版)》 |
作者: | 金玺曾 |
定价: | 99.00 |
ISBN号: | 9787302525813 |
出版社: | 清华大学出版社 |
编辑** | |
深受读者赞誉的Unity游戏开发原创经典,资深Unity游戏开发工程师十年经验分享 根据Unity 2018改版升级,多款热门游戏实战教学,Unity3D\2D游戏开发核心技术揭秘 新增VR\AR游戏开发、Shade图形编程、Lua脚本交互与热更新等,内容更精彩。 |
内容简介 | |
本书以实例教学为主线,循序渐进地介绍了Unity 2018在手机游戏开发方面的不同功能。1章,由零开始,引导读者熟悉Unity编辑器的各个功能模块和特性。2~4章是3个不同特色的3D游戏实例,使读者对Unity游戏开发有一个较全面的认识。5章是一个2D游戏实例,全方位地介绍了Unity在2D游戏方面的应用。6章和7章重点介绍了Unity在网络方面的应用。8~10章介绍了如何将Unity游戏移植到网页、iOS和Android平台。11章详细介绍了Unity的新GUI系统。12章是关于创建Unity游戏美术资源的工作流程。13章和14章分别介绍了行为树和Play Maker两款插件,15章介绍了使用HTC Vive创建VR应用,16章介绍了Unity结合Vuforia 在AR方面的应用,17和18章介绍了Shader图形编程和Lua脚本在Unity中的应用。本书后还附有C#语言的快速教程,帮助缺乏程序开发基础的读者快速入门,同时也包括Unity编辑器菜单栏的中英文对照表供读者查阅。
本书提供了所有实例的源代码与素材文件,供读者上机练习使用,读者可从网上下载本书资源文件。
本书适合广大游戏开发人员、游戏开发爱好者、软件培训机构以及计算机专业的学生等使用。 |
目录 | |
第1章 Unity基础 1 1.1 初识游戏引擎和Unity 2 1.2 运行Unity 3 1.2.1 Unity的版本 3 1.2.2 下载并安装Unity 4 1.2.3 在线激活Unity 4 1.2.4 运行示例工程 4 1.3 创建一个Hello World程序 7 1.3.1 安装Visual Studio 8 1.3.2 编写脚本 8 1.3.3 编译输出 10 1.4 调试程序 11 1.4.1 显示Log 11 1.4.2 在Visual Studio中设置断点 11 1.5 Unity脚本基础 12 1.5.1 Script(脚本)组件 12 1.5.2 脚本的执行顺序 13 1.5.3 脚本的序列化 14 1.5.4 组件式编程 15 1.5.5 协程编程 16 1.6 预置文件Prefab和资源管理 17 1.6.1 创建Prefab 17 1.6.2 Unity资源包 18 1.6.3 管理Unity插件 18 1.7 读取资源和实例化 19 1.7.1 在脚本中创建一个Game Object 19 1.7.2 通过序列化方式引用资源 19 1.7.3 通过IO方式读取资源 20 1.8 保存工程 20 1.9 时间和动画 21 1.10 小结 21 第2章 太空射击游戏 23 2.1 游戏介绍 24 2.1.1 游戏操作 24 2.1.2 主角和敌人 24 2.1.3 游戏UI 24 2.2 导入美术资源 24 2.3 创建场景 25 2.3.1 创建火星背景和星空动画 26 2.3.2 设置摄像机和灯光 30 2.4 创建主角 31 2.4.1 创建脚本 32 2.4.2 控制飞船移动 33 2.4.3 创建子弹 35 2.4.4 创建子弹Prefab 36 2.4.5 发射子弹 37 2.5 创建敌人 38 2.6 物理碰撞 39 2.6.1 添加碰撞体 39 2.6.2 触发碰撞 40 2.7 **敌人 43 2.7.1 创建敌人 43 2.7.2 发射子弹 44 2.8 声音与** 46 2.9 敌人生成器 48 2.10 游戏UI和战斗管理 50 2.10.1 创建显示得分的UI界面 50 2.10.2 创建显示游戏失败的UI界面 51 2.10.3 编写脚本 52 2.11 关卡跳转 54 2.12 用鼠标控制主角 56 2.13 精确的碰撞检测 58 2.14 自动创建Prefab 60 2.15 发布游戏 62 2.16 使用PoolManager创建对象池 64 2.17 小结 66 第3章 diyi人称射击游戏 68 3.1 策划 69 3.1.1 游戏介绍 69 3.1.2 UI界面 69 3.1.3 主角 69 3.1.4 敌人 69 3.2 游戏场景 69 3.3 主角 70 3.3.1 角色控制器 70 3.3.2 摄像机 72 3.3.3 武器 73 3.4 敌人 74 3.4.1 寻路 74 3.4.2 设置动画 76 3.4.3 行为 77 3.5 UI界面 80 3.6 交互 84 3.6.1 主角的射击 84 3.6.2 敌人的进攻与死亡 86 3.7 出生点 88 3.8 小地图 90 3.9 小结 93 第4章 塔防游戏 94 4.1 策划 95 4.1.1 场景 95 4.1.2 摄像机 95 4.1.3 胜负判定 95 4.1.4 敌人 95 4.1.5 防守单位 95 4.1.6 UI界面 95 4.2 地图编辑器 96 4.2.1 “格子”数据 96 4.2.2 在Inspector窗口添加自定义UI 控件 98 4.2.3 创建一个自定义窗口 100 4.3 游戏场景 102 4.4 制作UI 103 4.5 创建游戏管理器 105 4.6 摄像机 109 4.7 路点 111 4.8 敌人 115 4.9 敌人生成器 118 4.9.1 创建敌人生成器 118 4.9.2 遍历敌人 121 4.10 防守单位 121 4.11 生命条 130 4.12 小结 132 第5章 2D游戏 133 5.1 Unity 2D系统简介 134 5.2 创建Sprite 134 5.2.1 使用SpriteEditor创建Sprite 134 5.2.2 使用SpritePacker创建Sprite 136 5.2.3 图层排序 137 5.2.4 Sprite边框和重复显示 138 5.3 动画制作 138 5.3.1 序列帧动画 138 5.3.2 使用脚本实现序列帧动画 140 5.3.3 骨骼动画 141 5.4 2D物理 142 5.5 捕鱼游戏 146 5.5.1 游戏玩法 146 5.5.2 准备2D资源 146 5.5.3 创建鱼 148 5.5.4 创建鱼群生成器 150 5.5.5 创建子弹和大炮 151 5.5.6 物理碰撞 153 5.6 2D材质 154 5.6.1 修改Sprite颜色 154 5.6.2 自定义的黑白效果材质 155 5.7 小结 155 第6章 与Web服务器的交互 156 6.1 Web服务器简介 157 6.2 在Windows上安装部署Apache 158 6.2.1 安装Apache 158 6.2.2 Apache常用命令 159 6.2.3 安装MySQL 159 6.2.4 安装PHP 161 6.2.5 安装Redis 162 6.3 PHP开发环境 163 6.3.1 diyi个PHP程序 163 6.3.2 调试PHP代码 164 6.3.3 PHP基本语法 165 6.4 WWW基本应用 167 6.4.1 创建简单的UI界面 167 6.4.2 GET请求 168 6.4.3 POST请求 169 6.4.4 上传下载图片 170 6.4.5 下载声音文件 171 6.5 分数排行榜 172 6.5.1 创建数据库 172 6.5.2 创建PHP脚本 173 6.5.3 上传下载分数 175 6.5.4 使用Redis缓存数据 177 6.6 MD5验证 179 6.7 小结 180 第7章 TCP UDP实例 181 7.1 网络开发简介 182 7.2 简单的网络通信程序 184 7.2.1 简单的TCP程序 184 7.2.2 简单的UDP程序 186 7.3 异步TCP网络通信 188 7.3.1 创建数据包对象 188 7.3.2 逻辑处理 190 7.3.3 核心TCP网络功能 192 7.3.4 创建聊天协议 196 7.4 Unity聊天客户端 197 7.5 聊天服务器端 200 7.6 JSON.NET简介 205 7.7 小结 206 第8章 HTML5(WebGL)游戏移植 207 8.1 关于HTML5和WebGL 208 8.2 导出Unity游戏到WebGL平台 208 8.2.1 导出WebGL游戏 208 8.2.2 设置WebGL模板 210 8.2.3 默认的index.html 210 8.2.4 文件访问 211 8.3 自定义Loading页面 212 8.4 编写WebGL游戏插件 215 8.4.1 访问JavaScript示例一 215 8.4.2 访问JavaScript示例二 216 8.5 在网页上保存游戏记录 217 8.6 小结 217 第9章 iOS游戏移植 218 9.1 iOS简介 219 9.2 软件安装 219 9.3 申请开发权限 219 9.4 设置iOS开发环境 219 9.5 测试iOS游戏 222 9.6 发布iOS游戏 223 9.7 对接iOS原生语言 223 9.7.1 在Xcode中创建Objectiv-C 代码 223 9.7.2 在Unity中引用Objectiv-C 代码 226 9.8 内消费 227 9.9 本地存储位置 227 9.10 使用命令行编译Xcode工程 228 9.10.1 编译Xcode工程 228 9.10.2 打包.ipa文件 228 9.11 小结 228 第10章 Android游戏移植 229 10.1 Android简介 230 10.2 安装Android SDK 230 10.3 运行Android游戏 231 10.3.1 准备测试环境 231 10.3.2 设置Android游戏工程 232 10.3.3 测试Android游戏 234 10.3.4 发布Android游戏 234 10.3.5 Obb数据包 236 10.4 使用Android Studio 236 10.4.1 Android Studio简介 237 10.4.2 配置Android Studio 237 10.4.3 创建Hello world程序 238 10.5 从Unity到Android Studio 239 10.5.1 创建Unity工程 240 10.5.2 创建Android Studio工程 241 10.5.3 查看Log 243 10.5.4 发布程序 244 10.6 使用脚本编译游戏 245 10.6.1 在Unity中使用脚本导出 Android工程 245 10.6.2 使用Python脚本访问Unity 命令行 247 10.6.3 使用命令行编译Android Studio 工程 248 10.7 获得签名证书的sha1值 249 10.8 导入库文件 250 10.9 Plugins目录 251 10.10 代码混淆 251 10.11 百度地图实例 252 10.11.1 导入百度地图SDK 252 10.11.2 实现百度地图控件 253 10.12 触屏操作 256 10.13 AssetBundle 261 10.13.1 创建AssetBundle资源 261 10.13.2 下载、实例化AssetBundle 资源 263 10.13.3 批量创建AssetBundle 264 10.14 小结 265 第11章 Unity新GUI完全攻略 266 11.1 Unity的GUI系统 267 11.2 Canvas(画布) 267 11.2.1 创建Canvas 268 11.2.2 设置Canvas 268 11.2.3 Canvas的屏幕适应模式 271 11.2.4 Canvas层级内UI控件的 排序 271 11.2.5 Canvas的隐藏和显示 272 11.2.6 查找UI层级下的子控件 272 11.3 UI坐标对齐方式 272 11.4 Text(文字) 273 11.5 自定义字体 274 11.5.1 创建字体贴图 274 11.5.2 创建Shader 276 11.6 Image(图像) 278 11.6.1 创建Image控件 278 11.6.2 设置Alpha 279 11.6.3 设置Raycast Target 279 11.6.4 设置UI图像为Sliced类型 280 11.6.5 设置UI图像为Tiled类型 281 11.6.6 设置UI图像为Filled类型 281 11.6.7 Mask(蒙版) 282 11.7 Button(按钮)控件 283 11.7.1 创建按钮 283 11.7.2 设置按钮状态变化 283 11.7.3 在编辑器中设置按钮触发 事件 284 11.7.4 在脚本中定义按钮单击事件 285 11.7.5 判断按压按钮事件 286 11.8 Toggle(开关)控件 286 11.8.1 创建Toggle控件 286 11.8.2 Toggle组 287 11.8.3 Toggle控件的脚本 288 11.9 Raw Image控件 288 11.10 Slider(滑块)控件 290 11.10.1 创建Slider控件 290 11.10.2 改变滑块大小 290 11.10.3 使用脚本控制滑块 291 11.11 Input Field(文本输入)控件 291 11.12 Scroll View(卷轴视图)控件 292 11.13 Dropdown(下拉列表)控件 294 11.14 实用UI功能 295 11.14.1 判断是否单击了UI 295 11.14.2 拖动UI控件方法1 295 11.14.3 拖动UI控件方法2 297 11.14.4 在UI前面显示粒子** 298 11.15 使用插件DOTween制作动画 299 11.15.1 在编辑器中设置DOTween 动画 299 11.15.2 在脚本中设置DOTween 动画 300 11.16 使用插件EnhancedScroller优化 卷轴视图 301 11.16.1 创建数据模型 302 11.16.2 创建UI视图控制脚本 302 11.16.3 创建控制器 302 11.16.4 创建卷轴视图UI 303 11.17 小结 305 第12章 游戏开发中的美术工作 流程 306 12.1 Unity和艺术家 307 12.2 视图操作捕捉 307 12.3 光照和渲染系统 308 12.3.1 光源类型 308 12.3.2 渲染管道 309 12.3.3 质量设置 310 12.3.4 实时阴影 310 12.3.5 环境光 312 12.3.6 Fog(雾) 313 12.3.7 直接照明与间接照明 314 12.3.8 Lightmapping(光照贴图) 316 12.3.9 环境反射采样 321 12.3.10 光照采样 322 12.4 色彩空间 324 12.5 物理材质 326 12.6 摄像机 329 12.7 地形 331 12.8 粒子** 334 12.9 物理设置 339 12.10 游戏资源 341 12.10.1 贴图 341 12.10.2 在3ds Max中创建 法线贴图 342 12.10.3 3ds Max静态模型导出 343 12.10.4 3ds Max动画导出 345 12.10.5 Maya模型导出 345 12.11 Unity两足动画系统 346 12.11.1 修改3ds Max两足动画 骨骼 347 12.11.2 导入3ds Max两足角色到 Unity 348 12.11.3 导入角色动画到Unity 348 12.11.4 表情动画 349 12.11.5 动画控制器 350 12.12 动画插件Skele 351 12.13 电影片段制作 355 12.14 美术资源的优化 357 12.15 小结 358 第13章 Behavior Designer——行为 树AI 359 13.1 行为树和AI 360 13.1.1 行为树插件的安装 360 13.1.2 简单的AI处理方式 360 13.1.3 状态机AI处理方式 361
13.1.4 Behavior Designer的行为树AI 处理方式 362 13.2 行为树任务 363 13.2.1 任务返回值 363 13.2.2 Action(动作) 363 13.2.3 Composite(组合) 363 13.2.4 Conditional(条件) 365 13.2.5 Decorator(修饰) 366 13.3 行为树实例 366 13.3.1 主角的行为树 367 13.3.2 游荡的敌人 372 13.3.3 行为树的交互 373 13.4 行为树系统扩展 376 13.4.1 外部行为树 376 13.4.2 自定义任务 377 13.4.3 自定义共享数据类型 378 13.4.4 在脚本中设置行为树 380 13.4.5 在脚本中发送事件 380 13.5 优化 380 13.6 小结 381 第14章 玩转PlayMaker 382 14.1 关于PlayMaker 383 14.1.1 优点和缺点 383 14.1.2 安装 383 14.2 PlayMaker的模块和工作机制 384 14.2.1 有限状态机 384 14.2.2 创建PlayMaker状态机 384 14.2.3 State(状态) 385 14.2.4 Event(事件) 385 14.2.5 Action(动作) 386 14.2.6 变量 387 14.2.7 发送事件 388 14.3 自定义Action 388 14.4 小结 391 第15章 VR虚拟现实开发 392 15.1 VR简介 393 15.2 设置HTC Vive开发环境 393 15.3 VR操作示例 394 15.3.1 创建VR场景 394 15.3.2 手柄控制器 395 15.4 小结 397 第16章 AR增强现实开发 398 16.1 AR和Vuforia 399 16.2 创建Vuforia工程 399 16.3 准备AR参考目标 401 16.4 设置AR参考目标 402 16.5 小结 404 第17章 Shader编程与后期** 405 17.1 Shader简介 406 17.2 渲染管线 406 17.3 ShaderLab语言 407 17.4 CG语言简介 409 17.5 Vertex and Fragment Shader示例 409 17.5.1 显示纹理和色彩 409 17.5.2 使用通道表现多个纹理 412 17.5.3 添加基本光照 414 17.5.4 UV动画效果 415 17.5.5 黑白效果 416 17.5.6 简单描边效果 417 17.5.7 Alpha透明效果 419 17.6 屏幕**示例 421 17.7 后期** 423 17.8 小结 424 第18章 动态编程和Lua 425 18.1 动态语言简介 426 18.2 动态读取程序集实现热更新 426 18.2.1 创建.dll文件 426 18.2.2 测试热更新.dll文件 427 18.2.3 通过反射访问.dll文件 428 18.3 Lua语言快速教程 429 18.3.1 MoonSharp和Lua开发环境的 安装 429 18.3.2 Lua提供的类型 429 18.3.3 Lua的判断和循环语句 430 18.3.4 Lua的函数 431 18.3.5 Lua的IO操作 431 18.3.6 Lua的数组操作 432 18.3.7 Lua的字符串操作 433 18.3.8 Lua的协程 433 18.4 Lua与Unity的交互 435 18.4.1 在Unity中读取Lua代码 435 18.4.2 将Unity 功能导入到 Lua中 436 18.5 Lua脚本的热更新 437 18.6 小结 438 附录A C#语言 439 A.1 C#基础 440 A.1.1 C#简介 440 A.1.2 运行控制台程序 440 A.1.3 类型 441 A.1.4 内置类型 441 A.1.5 标识符 442 A.1.6 语句和表达式 442 A.1.7 变量和常量 443 A.1.8 枚举 443 A.1.9 数学操作符 443 A.1.10 关系操作符 444 A.1.11 逻辑操作符 444 A.1.12 操作符优先级 445 A.1.13 方法 445 A.1.14 递归 446 A.1.15 条件分支语句 446 A.1.16 循环语句 447 A.1.17 三元操作符 448 A.1.18 预处理 448 A.2 面向对象编程 449 A.2.1 类 449 A.2.2 this关键字 450 A.2.3 封装 451 A.2.4 继承与多态 452 A.2.5 静态成员 454 A.2.6 异常处理 455 A.3 字符串 456 A.4 数组 458 A.4.1 创建数组 458 A.4.2 遍历数组和迭代器 458 A.5 基本I/O操作 460 A.5.1 写文件 460 A.5.2 读文件 461 A.5.3 删除文件 462 A.5.4 二进制读写 462 A.6 泛型 463 A.6.1 实现泛型的基本语法 463 A.6.2 List的常见操作 464 A.6.3 List的排序 465 A.7 委托 468 A.7.1 委托 468 A.7.2 Lambda表达式 469 A.7.3 泛型委托 470 A.7.4 Action和Func 470 A.8 反射和特性 471 A.8.1 反射 471 A.8.2 特性 471 A.9 小结 472 附录B 特殊文件夹 473 附录C Unity编辑器菜单中英文对照 475 |
作者简介 | |
金玺曾,资深游戏开发工程师,拥有10余年游戏行业从业经验,先后在上海盛大网络,上海爱客士电脑软件,上海皿鎏软件从事游戏开发工作,参与过很多原创和外包项目。 |
精彩试读 | |
编写本书的目的 Unity,也称Unity 3D,是近几年非常流行的一款3D游戏开发引擎,它的特点是跨平台能力强,支持PC、Mac、Linux、网页、iOS、Android等平台,移植便捷,3D图形性能出众,同时也支持2D功能,为众多游戏开发者所喜爱。在手机平台,Unity几乎成为3D、2D游戏开发的标准工具。 游戏开发是一项复杂的工作,本书在编写过程中十分注重与实际开发相结合,全书以实例为基础,使读者在较短的时间内能快速掌握Unity 2018的各种工具和开发技巧,并应用于实践中。 本书主要内容 本书为第4版,总体上更新了大部分代码和截图,改进了细节,确保与Unity的新版本保持一致,下面是各章的内容概要。 第1章介绍Unity编辑器的各个功能模块,突出介绍了Unity的一些特点。 第2章是一个太空射击游戏教程,这是一个入门级的教程,从如何创建一个脚本,到一个完整的游戏有较为细致的介绍,*后介绍了使用对象池插件Pool Manager缓存游戏对象。 第3章是一个diyi人称射击游戏教程,涉及人工智能寻路、动画、摄像机控制等内容。 第4章是一个塔防游戏教程,介绍了创建更为复杂的关卡,详细地介绍了如何自定义Unity编辑器,灵活运用协程实现相对复杂的逻辑,配置和生成敌人。 第5章介绍Unity在2D游戏方面的应用,包括创建Sprite、动画的播放和一个较为完整的2D捕鱼游戏实例。 第6章介绍Unity在HTTP网络通信方面的应用,还涉及PHP和MySQL的基础应用,使Unity游戏可以与Web服务器进行通信,上传下载得分记录等。 第7章是一个完整的、基于TCP/IP协议的聊天实例,介绍使用Unity创建聊天客户端,并使用.NET开发环境创建聊天服务器端。与前一版相比,本章的内容编排改动较大,示例更加简练。 第8章介绍如何将Unity游戏运行在HTML5网页上。 第9章介绍如何将Unity游戏移植到iOS平台,从如何申请开发资格到测试、发布iOS游戏都有详细的介绍,与前一版相比,本章增加了使用iOS命令行编译工程的示范。 第10章介绍如何将Unity游戏移植到Android平台,并详细介绍了几种为Unity开发Android插件的方法,结合百度地图SDK完成完整的应用实例。本章*后还更新了AssetBundle的内容。与前一版相比,本章对使用Android Studio进行开发的一些细节做了补充。 第11章全面介绍Unity新GUI的大部分功能和细节,并附有大量示例,*后还介绍了DOTween Pro和EnhancedScroller两款常用插件的使用。 第12章主要是对创建Unity游戏美术资源的介绍,包括光照系统、Lightmap、PBR Shader和两足动画系统等,同时还结合了一些3D动画软件的介绍,如3ds Max和Maya。和前一版相比,本章增加了Unity动画工具Timeline的教程示例。 第13章介绍行为树AI插件Behavior Designer(行为设计师),它主要应用在AI方面,无论是程序员还是游戏开发爱好者都能找到使用它的乐趣。 第14章介绍Unity社区中*有名的插件Play Maker,它和Behavior Designer都属于可视化编程产品,Behavior Designer的设计模式是基于行为树, Player Maker是基于状态机,后者有更广泛的用户群。和前一版相比,本章的截图更新到PlayMaker版本1.9,并修正了一些描述上的问题。 第15章介绍了使用HTC Vive创建VR应用的基本流程,实现包括拾取、投掷等很多基本功能。 第16章介绍了Unity结合Vuforia 在AR方面的应用。 第17章介绍了Shader图形编程的基本概念,Shader Lab和CG语言的运用及大量示例,*后还讲述了如何创建全屏**Shader实现后期效果。 第18章介绍了编写Lua脚本的基本概念,如何在Unity中与Lua脚本进行交互及实现Lua脚本的热更新等。 读者对象 本书的读者主要是游戏开发程序员和Unity爱好者,部分内容也适合游戏策划和游戏艺术家作为参考。 对于本书的完成,要特别感谢王金柱编辑给予的帮助和指导,感谢我的妻子在深夜帮助我校对书稿,还要感谢我的儿子给我莫大的精神支持。 代码下载 本书案例代码均在Unity 2018.2下调试通过,案例源代码及素材文件请扫描下列二维码获取。若下载有问题,请发送电子邮件到booksaga@126.com,邮件主题为“Unity 3D\2D手机游戏开发从学习到产品”。
金玺曾 2019年1月 |