这本《Unity 2D游戏开发从入门到精通》书籍为Unity游戏开发者提供了丰富的资源和具体的步骤,帮助他们在游戏开发的旅程中找到正确的方向,内容涵盖从基础理论到实际操作的全方位知识,不仅减轻了初学者的学习曲线,同样为有一定经验的开发者提供深入的案例分析,书中通过分篇章结构,将复杂的游戏开发流程拆解成若干个可管理的部分,每一部分都专注于不同类型游戏的开发,确保读者能够通过实践学习来掌握关键的游戏设计和编程概念,从战斗机游戏到卡牌对战再到即时战斗类游戏的递进式教学,不仅让开发者体验游戏构建的乐趣,同时也确保了技能的逐步提升,书内的丰富示例、明晰的步骤和实用的技巧说明,无疑能够帮助读者在Unity 2D游戏开发的道路上更快前进。
这书是中国第一本专业详细介绍Unity 2D游戏编程的书籍,都是国內1本解读Unity 2D游戏编程的实例教程。这书根据对游戏开发全过程的详解,协助Unity开发者尽早了解2D游戏的开发步骤和方法。一起,以便照料游戏编程的新手,这书还对2D手机游戏各种各样基础理论干了必需叙述。
这书共有3篇。第1篇详细介绍了战斗机类手机游戏《宇宙飞船大战外星人》的开发设计,全过程较简易,合适做为用户触碰并开发设计的第一位手机游戏;第2篇详细介绍了卡牌类手机游戏《记忆力大挑战》的开发设计,全过程较难,书中也用了较多的篇数详细介绍,合适做为用户触碰并开发设计的第一位较繁杂的手机游戏;第3篇详细介绍了即时对战类手游《狂怒肉坦》的开发设计,全过程较难,合适做为用户掌握脚本制作针对手机游戏逻辑性必要性的第一位手机游戏。
这书不但有利于Unity开发人员从3D游戏编程刹车2D游戏编程,并且还有利于新手迅速把握Unity 2D游戏编程的专业技能。
战机游戏――宇宙飞船大战外星人
Unity以及构成
材料和纹路
下手开发设计1个简易的2D手机游戏
卡片游戏――记忆力大挑战
应用编类自定编
照片与图形另一半
转化成纹路标准图集
UV和动漫
有益2D手机游戏的监控摄像头与情景设定
获得游戏玩家对2D手机游戏的键入
2D卡片游戏――记忆力大挑战
可联机游戏玩的手机游戏――记忆力大挑战
提升手机游戏的方式
即时对战类手游――狂怒肉坦
建立1个简易的2D手机游戏
为手机游戏小精灵加上大量情况
让手机游戏小精灵已不孤独
为手机游戏加上大量背景图原素
最终作战
让手机游戏更健全
目录
- 第1篇 战机游戏――飞船大战外星人
- 第1章 Unity及其组成的介绍
- 1.1 Unity概述
- 1.2 项目、资源和场景
- 1.2.1 项目
- 1.2.2 资源
- 1.2.3 场景
- 1.3 场景视图的操作
- 1.3.1 使用快捷键操作场景视图
- 1.3.2 使用Gizmo操作场景视图
- 1.4 游戏对象和组件
- 1.5 脚本与脚本编辑器
- 1.5.1 创建脚本
- 1.5.2 脚本编辑器
- 1.6 脚本的调试
- 1.6.1 调试方法一
- 1.6.2 调试方法二
- 第2章 材质和纹理
- 2.1 材质和纹理的使用
- 2.1.1 使用材质
- 2.1.2 不同的材料类型――着色器
- 2.1.3 使用纹理
- 2.2 应用于2D游戏的材质
- 2.2.1 缘由
- 2.2.2 技巧一:使用白色的环境光
- 2.2.3 技巧二:使用光不敏感着色器
- 2.3 纹理使用规则
- 2.3.1 规则1:分辨率是2的次方
- 2.3.2 规则2:保证“质量”
- 2.3.3 规则3:增加阿尔法通道(Alpha Channel)
- 2.4 导入纹理
- 2.4.1 导入纹理时默认设置介绍
- 2.4.2 含有透明信息的纹理
- 第3章 着手开发一个简单的2D游戏
- 3.1 开始开发2D游戏
- 3.1.1 导入纹理资源
- 3.1.2 新建材质资源
- 3.1.3 修改场景的环境光及游戏时的屏幕尺寸
- 3.2 为场景添加游戏对象
- 3.2.1 调整游戏对象的角度
- 3.2.2 改变游戏对象的位置
- 3.2.3 游戏对象的“碰撞”组件
- 3.3 让飞船动起来
- 3.4 让飞船发射子弹
- 3.4.1 在场景中添加子弹
- 3.4.2 游戏时,让子弹在场景中移动
- 3.4.3 生成子弹的预设
- 3.4.4 设置子弹的发射位置
- 3.4.5 在恰当的时机发射子弹
- 3.5 让外星飞船动起来
- 3.5.1 编写脚本
- 3.5.2 设置外星飞船的触发器
- 3.5.3 为子弹预设添加刚体组件
- 3.6 为游戏添加背景
- 第2篇 卡片游戏――记忆大作战
- 第4章 使用编辑器类自定义编辑器
- 4.1 编辑器类
- 4.2 开始使用编辑器类编写工具
- 4.2.1 为项目添加脚本
- 4.2.2 创建指定名称的文件夹
- 4.3 把工具添加到菜单
- 4.3.1 CreateWizard()函数
- 4.3.2 测试脚本的实现效果
- 4.4 读取场景中选择的对象
- 4.4.1 在脚本中使用Selection类
- 4.4.2 测试脚本的实现效果
- 4.5 为工具窗口添加用户输入框
- 4.6 完成工具的所有功能
- 第5章 图片与几何图形对象
- 5.1 2D游戏常用的图片
- 5.1.1 精灵
- 5.1.2 图块集
- 5.1.3 图形绘制中的问题
- 5.1.4 设想
- 5.2 开始编写编辑器工具
- 5.3 设置四边形的轴点
- 5.4 指定四边形资源的存放路径
- 5.5 生成四边形
- 5.5.1 阶段一:创建构成四边形的顶点、UV和三角形
- 5.5.2 阶段二:在资源面板中生成四边形
- 5.5.3 阶段三:在场景中实例化一个四边形
- 5.6 使用四边形生成工具
- 第6章 生成纹理图集
- 6.1 为什么要使用纹理图集
- 6.1.1 降低绘制调用的次数
- 6.1.2 便于灵活使用纹理
- 6.1.3 便于管理纹理
- 6.2 开始编写生成纹理图集的工具
- 6.3 添加组成纹理图集的纹理
- 6.4 UV对纹理图集的重要性
- 6.5 生成纹理图集
- 6.5.1 步骤一:优化输入的纹理
- 6.5.2 步骤二:构建纹理图集
- 6.5.3 步骤三:保存图集的预置
- 6.6 脚本文件TexturePacker代码汇总
- 6.7 测试工具的使用效果
- 第7章 UV和动画
- 7.1 生成一个可停靠的编辑器
- 7.2 编辑工具窗口的界面
- 7.2.1 添加预置资源选择区域
- 7.2.2 添加纹理选择区域
- 7.2.3 添加纹理选择的两种方式
- 7.2.4 编写用于修改网格对象UV坐标的函数
- 7.2.5 添加应用所有设置的按钮
- 7.3 工具脚本代码的汇总与使用
- 7.4 一个播放动画的平面对象
- 第8章 益于2D游戏的摄像机与场景设置
- 8.1 摄像机类型:透视与正交
- 8.2 世界单元与像素
- 8.3 世界单元与像素的转换
- 8.3.1 添加纹理和四边形对象
- 8.3.2 调整四边形与摄像机的位置
- 8.3.3 世界单元:像素=1:1
- 8.3.4 对齐屏幕和场景坐标的原点
- 8.4 纹理图片的完美显示
- 8.5 其他有用的设置技巧
- 8.5.1 调节深度
- 8.5.2 合成视图
- 第9章 获取玩家对2D游戏的输入
- 9.1 自动检测鼠标单击事件
- 9.2 手动检测鼠标单击事件
- 9.2.1 鼠标按下的键及其位置
- 9.2.2 鼠标单击的第一个对象
- 9.2.3 鼠标单击的所有对象
- 9.3 修改游戏中的鼠标图标
- 9.3.1 准备所需的资源,并做适当设置
- 9.3.2 编写脚本
- 9.3.3 两个坐标系导致的问题
- 9.3.4 查看游戏视图中的效果
- 9.4 使用键盘控制鼠标移动
- 9.5 对游戏输入的抽象――输入轴
- 9.5.1 了解输入轴
- 9.5.2 输入轴在输入过程中的应用
- 9.6 来自移动设备的输入
- 9.6.1 检测移动设备上的触摸操作
- 9.6.2 把触摸操作当作鼠标操作
- 9.6.3 有选择的编译代码
- 第10章 2D卡片游戏――记忆大作战
- 10.1 游戏设计的文档
- 10.2 开始着手创建游戏
- 10.2.1 在资源面板中创建文件夹
- 10.2.2 创建一个纹理图集
- 10.2.3 创建四边形对象
- 10.2.4 修改四边形的材质和UV
- 10.2.5 设置摄像机和游戏视图的分辨率
- 10.3 设置场景中的卡片
- 10.3.1 设置卡片的属性
- 10.3.2 定位卡片的位置
- 10.3.3 编写控制卡片行为的脚本
- 10.3.4 补全场景中其余的卡片
- 10.4 游戏管理类
- 10.4.1 重置卡片
- 10.4.2 处理玩家输入
- 10.4.3 响应玩家输入
- 10.4.4 游戏管理类代码汇总
- 10.5 完善并运行游戏
- 10.5.1 替换系统鼠标图标
- 10.5.2 游戏运行效果展示
- 第11章 可联机玩的游戏――记忆大作战
- 11.1 网络连接
- 11.2 建立服务器端
- 11.3 建立客户端
- 11.4 测试网络连接的功能
- 11.5 网络视图组件
- 11.6 构建授权服务器
- 11.7 建立游戏输入操作的秩序
- 11.7.1 游戏启动时,禁止输入操作
- 11.7.2 连接建立后,允许服务器端的输入操作
- 11.7.3 服务器端远程调用客户端上的函数
- 11.7.4 客户端远程调用服务器端上的函数
- 11.8 修改游戏管理类脚本
- 11.9 游戏运行效果展示
- 11.10 为游戏添加分数记录
- 第12章 优化游戏的方法
- 12.1 最优化,如你所想吗
- 12.2 减少顶点的数目
- 12.3 减少材质
- 12.4 减少UV接缝
- 12.5 不同平台下,纹理的不同设置
- 12.6 对象缓存组件
- 12.7 避免频繁使用Update()函数
- 12.8 合理使用Collider组件
- 12.9 避免使用OnGUI()和GUI类
- 12.10 使用静态批处理
- 12.11 使用天空盒子
- 第3篇 实时策略类游戏――狂怒坦克
- 第13章 创建一个简单的2D游戏
- 13.1 地面
- 13.2 游戏精灵
- 13.3 精灵动画
- 13.3.1 Animation
- 13.3.2 Animator
- 13.4 使用脚本实现游戏逻辑
- 13.4.1 精灵动画状态的控制
- 13.4.2 监听精灵当前的动画状态
- 13.5 2D游戏的运行效果
- 第14章 为游戏精灵添加更多状态
- 14.1 摄像头追踪功能
- 14.2 精灵的死亡和重生
- 14.3 添加多个地面
- 14.4 精灵的跳跃状态
- 14.5 精灵的开火状态
- 第15章 让游戏精灵不再孤单
- 15.1 为游戏添加反派角色
- 15.2 精灵与反派角色碰撞后死亡
- 15.3 精灵主动攻击反派角色
- 15.4 添加反派角色销毁时的效果
- 15.5 添加多个反派角色到游戏中
- 第16章 为游戏添加更多背景元素
- 16.1 为游戏场景补充更多元素
- 16.1.1 限制精灵的移动范围
- 16.1.2 添加背景元素
- 16.1.3 让背景元素动起来
- 16.1.4 让粒子效果显示在前面
- 16.2 记录分数
- 16.3 动态生成更多的敌人
- 第17章 终极战斗
- 17.1 引入究极敌人
- 17.2 究极敌人的行为逻辑
- 17.3 让究极敌人的出场更威风些
- 17.4 究极敌人的攻击方式
- 17.5 玩家精灵的反击
- 第18章 让游戏更完善
- 18.1 游戏关卡
- 18.2 游戏标题及开始按钮
- 18.2.1 导入标题和按钮资源
- 18.2.2 表示游戏状态的类
- 18.2.3 单击开始按钮,进入游戏
- 18.2.4 游戏最终运行效果展示