欢迎光临
免费的PDF电子书下载网站

iOS和tvOS 2D游戏开发教程 PDF下载

编辑推荐

本书是作者团队精心为初学者打造的iOS和tvOS 2D游戏的开发教程。本书按照“从开发游戏中学习,从挑战实践中学习”的原则,通过游戏开发的实际案例来进行讲解,借助挑战实践让读者运用所学的知识。同时,本书关注游戏设计理念、实现,尤其是游戏开发中的打磨等整体过程,帮助读者掌握从游戏思路、代码实现,到后期优化,tvOS移植甚至App Store上线后的完整工作环节。
本书内容详尽、生动有趣,适合对iOS和tvOS上的游戏开发感兴趣的初学者阅读参考。
本书配套代码和素材可以从www.epubit.com.cn下载。

阅读本书,跟随作者一起开发以下几款不同类型的、精彩的iOS 2D游戏:
■ 僵尸游戏Zombie Conga——跳着康茄舞的僵尸,要咬住旁边的小猫,让它们加入康茄舞的队列;猫女士则用她的雨
伞对抗僵尸,抢救小猫。
■ 谜题游戏Cat Nap——困倦的小猫想要上床睡觉,必须想方设法破坏掉木头块,而且要正好落在床上而不是地上。
■ 平台跳跃游戏Drop Charge——太空英雄肩负摧毁外星人的飞船的使命,并且要在爆炸之前逃生,从一个平台跳到另
一个平台,一路上可以收集金币,但是小心不要被火热的岩浆吞噬掉。
■ 塔防攻击游戏Dino Defense——成群的恐龙要攻击玩家的村庄,玩家必须在地图上放置炮塔,向恐龙发射石头或木头
炮弹,以阻止敌人靠近他们的家园。
■ 地牢探险游戏Delve——矿工需要在耗尽生命值之前逃出地牢,而大群的黑暗神秘石人则试图阻止他逃走。
■ 赛车游戏Circuit Racer——赛车手驾驶着赛车绕赛道完成跑圈,可以选择容易、中等和困难等不同难度级别的赛道,但不要撞击围栏超过规定的次数。 

内容简介

Sprite Kit是Apple内建的框架,专门用于开发iOS的2D游戏。tvOS是Apple TV所使用的操作系统平台,可以将App和游戏等呈现到大屏幕的TV上。本书详细介绍了如何使用Apple内建的2D游戏框架Sprite Kit和Swift语言来开发iOS和tVOS游戏。
全书共分为5个部分29章。每个部分针对一类技术主题,并且通过一款生动的游戏的开发贯穿其中。当学习完每个部分的时候,读者通过一款游戏的关卡或功能的逐步完成和完善,不知不觉掌握了作者所要介绍的技术主题。
第1部分包括前7章,涵盖了用Sprite Kit进行2D游戏开发的基础知识,分别介绍了角色、手动移动、动作、场景、相机、标签等主题,并且初步认识了tvOS。这部分将开发一款叫做Zombie Conga的僵尸游戏,并将其迁移到tvOS上。第二部分包括第8章到第13章,主要介绍场景编辑器、游戏开发的物理知识,裁剪、视频和形状节点以及中级tvOS知识。这部分将开发一款叫做Cat Nap的谜题游戏,并将其迁移到tvOS上。第三部分关注给游戏添加特效,包括第14章到第17章,将开发一款叫做Drop Charge的游戏,并通过状态机、粒子系统、声影效果、动画等众多技术来点亮这款游戏。第四部分包括第18章到第20章,主要关注iOS 9新引入的GameplayKit技术。这部分会开发一款Dino Defense塔防攻击游戏,并通过实体-组件系统、寻路算法和代理、目标和行为等技术,实现游戏中的恐龙的寻路和移动行为。第五部分包括第21章到第24章,涉及贴图地图、程序式关卡生成、GameplayKit*性和游戏控制器等高级话题。这部分将开发一款叫做Delve的地牢探险游戏,并应用各章所介绍的技术。第六部分包括第24章到第29章,涉及和游戏相关的其他技术,包括向游戏中添加Game Center排行榜和成就、使用ReplayKit录制游戏视频并进行分享、把iAd加入到游戏中,以及程序员如何实现游戏美工。这部分将打造一款叫做Circuit Racer的赛车游戏中,并加入各章所所介绍的技术。
本书内容详尽、生动有趣,通过丰富、完整的游戏案例,帮助读者学习和掌握全新的游戏开发技术。本书适合对iOS和tvOS上的游戏开发感兴趣的初学者阅读参考。

作者简介

Mike Berg是一位全职的游戏美术师,他很幸运地和来自全世界的独立游戏开发者一起工作。当他没有处理像素色彩的时候,他喜欢美食、花时间和家人在一起,以及玩游戏并感受快乐。可以通过www.weheartgames.com找到他的作品。
Michael Briscoe是一位有着30多年经验的独立的软件开发者。他所选择的平台包括Apple的所有产品,从Macintosh、 到iPhone、iPad和Apple TV。他的专长是开发娱乐性软件,例如游戏和模拟器。可以访问他的Web站点skyrocketsoftware. wordpress.com。
Kauserali Hafizji是一位开发者。他是一位热衷编写代码的程序员,甚至在周末的时候,他也在编程。一本好书,泡个澡,再吃上一顿大餐,对他来说就可以过一个很好的周末了。你可以通过@Ali_hafizji在Twitter上找到他。
Neil North是一位资源管理员、软件开发者和业务自动化专家,他很喜欢开发独立的游戏、从事音频工程,以及帮助其他人实现有创意的目标。他还教授iOS游戏和App开发,并且在Udemy和CartoonSmart上都开设了课程。Neil居住在澳大利亚,你可以访问他的网站apptlycreative.com。
Toby Stephens有20多年的软件开发经验,并且目前是伦敦的inplaymaker移动开发总监。Toby热衷于游戏编程。他还会编写乐曲,并且喜欢烘焙面包。可以通过@TJShae在Twitter上联系他,也可以访问他的网站website: tjshae.com。
Rod Strougo从Apple II开始了自己的物理和游戏之旅,开始用Basic编写游戏。Rod的职业生涯有过转型,他花了15年的时间为IBM和AT&T编写软件。在那些日子里,他始终保持着在游戏开发和教学方面的热忱,并且在Big Nerd Ranch等处提供iOS培训。他起初来自巴西的Rio de Janeiro,现在和妻子和儿子一起居住在亚特兰大。
Marin Todorov是一位独立的iOS开发者和作者。他20多年前开始在Apple II上就行开发,并且一直持续到今天。除了编写代码,Marin还喜欢写博客、写书、教学和演讲。他有时候会花时间为开源项目编写代码。他居住在Santiago。可以访问他的Web站点www.underplot.com。
Ray Wenderlich是一位iPhone开发者,也是Razeware LLC的创始人。Ray对于开发App和教授其他人开发App都充满了热情。他和他的教程团队已经编写了很多iOS开发教程,参见www.raywenderlich.com 。

iOS和tvOS 2D游戏开发教程 PDF下载

目录

第一部分 基 础 知 识

第1章 精灵 2

1.1 开始 2

1.1.1 通用App支持 6

1.1.2 添加图像 7

1.1.3 启动界面 8

1.2 显示精灵 11

1.2.1 创建精灵 11

1.2.2 把精灵加到场景 11

1.2.3 定位精灵 12

1.2.4 设置精灵的锚点 13

1.2.5 旋转精灵 14

1.2.6 获取精灵的大小 15

1.2.7 精灵和节点 15

1.2.8 节点和z位置 16

1.2.9 最后修整 16

1.3 挑战 17

挑战1:添加僵尸 17

挑战2:进一步的文档 18

第2章 手动移动 19

2.1 Sprite Kit游戏循环 19

2.2 移动僵尸 21

2.2.1 第1次迭代:每帧固定

移动 21

2.2.2 第2次迭代:速率乘以时间

增量 23

2.2.3 第3次迭代:朝着触摸的

方向移动 24

2.2.4 第4次迭代:边界检测 28

2.2.5 第5次迭代:游戏区域 29

2.3 旋转僵尸 31

2.4 挑战 33

挑战1:数学工具 33

挑战2:让僵尸停下来 35

挑战3:平滑移动 35

第3章 动作 38

3.1 移动动作 38

3.2 连续动作 40

3.3 等待动作 41

3.4 运行代码块动作 42

3.5 反向动作 42

3.6 重复动作 44

3.7 定期生成 45

3.8 从父节点删除动作 46

3.9 动画动作 47

3.10 停止动作 48

3.11 缩放动画 49

3.12 旋转操作 50

3.13 组动作 51

3.14 碰撞检测 52

3.15 Sprite Kit游戏循环第2轮 54

3.16 声音动作 55

3.17 共享动作 55

3.18 挑战 56

挑战1:ActionsCatalog演示程序 56

挑战2:一个受保护的僵尸 57

挑战3:康茄舞队 57

第4章 场景 59

4.1 获胜或失败的条件 59

4.2 创建一个新的场景 61

4.3 转换到一个场景 62

4.4 创建一个定制的场景初始化

 程序 63

4.5 背景音乐 65

4.6 挑战 65

挑战1:主菜单场景 66

第5章 相机 67

5.1 灯光、相机,开始 67

5.2 滚动的背景 70

5.3 不断滚动的背景 72

5.4 修改游戏设置 74

5.5 挑战 75

挑战1:修改猫女士 75

第6章 标签 77

6.1 内建字体和字体族 77

创建标签 79

6.2 给Zombie Conga添加一个

 标签 80

6.3 对齐方式 81

6.4 加载定制字体 83

6.5 更新标签文本 86

6.6 挑战 86

挑战1:小猫计数 86

第7章 初识tvOS 88

7.1 tvOS用户输入 88

7.2 开始 89

7.3 按钮按下 92

7.4 添加一个tvOS目标 93

7.5 修正触摸处理 97

7.6 上架图像和3D图标 99



第二部分 物理和节点



第8章 场景编辑器 102

8.1 开始 103

8.1.1 材质图册简介 104

8.2 开始使用场景编辑器 105

8.2.1 Object Library 106

8.2.2 添加和放置精灵 107

8.2.3 布置第一个场景 108

8.3 文件引用 110

8.4 动画和动作引用 112

给节点添加动作 113

8.5 关于时间线的更多介绍 114

重复动作 115

8.6 挑战 118

挑战1:进一步创建小猫动作 118

挑战2:进一步创建小猫场景 120

第9章 物理基础 122

9.1 Sprite Kit中的物理引擎 122

物理实体 123

9.2 开始 124

9.3 第一个Playground 126

9.4 创建一个Sprite Kit Playground 127

9.5 圆形实体 131

9.6 边缘闭合实体 133

9.7 矩形实体 134

9.8 定制形状的实体 134

9.9 可视化实体 135

9.10 复杂形状的实体 136

9.11 物理实体的属性 138

9.12 应用冲击 139

9.13 挑战 141

挑战1:力量 141

挑战2:体感实体 142

第10章 中级物理 143

10.1 开始 143

10.2 定制节点类 144

10.3 将精灵连接到变量 146

10.4 添加物理 147

10.4.1 在场景编辑器中创建简单

 实体 148

10.4.2 模拟场景 149

10.4. 3用代码创建简单实体 150

10.4.4 创建定制实体 151

10.5 SKTUtils简介 151

10.6 背景音乐 152

10.7 控制实体 152

10.7.1 分类实体 153

10.7.2 处理触摸 155

10.7.3 检测实体之间的碰撞 157

10.7.4 检测实体之间的接触 159

10.8 最终修改 161

10.8.1 添加一条游戏进行中的消息 161

10.8.2 失败场景 162

10.8.3 播放动画 164

10.8.4 获胜场景 165

10.9 挑战 166

挑战1:统计弹跳次数 167

第11章 高级物理 168

11.1 Spirt Kit游戏循环第3轮 168

11.2 关卡2简介 170

11.3 加载关卡 171

11.4 场景编辑器,第2轮 171

11.4.1 弹弓 174

11.5 接合概览 175

11.5.1 固定接合 175

11.5.2 有限接合 176

11.5.3 弹性接合 176

11.5.4 别针接合 177

11.5.5 滑动接合 177

11.6 接合的应用 178

11.6.1 使用固定接合 178

11.6.2 使用弹性接合 180

11.7 Sprite Kit游戏循环,第4轮 181

11.8 限制概览 182

11.8.1 实现绳子的限制 183

11.8.2 更多限制 184

11.9 动态地创建和删除接合 184

11.10 组合形状 187

11.10.1 设计关卡3 188

11.10.2 创建组合对象 189

11.11 关卡推进 192

11.12 挑战 192

挑战1:给Cat Nap再添加一个关卡 193

第12章 裁剪、视频和形状节点 195

12.1 开始 196

12.2 裁剪节点 196

12.3 视频节点 200

12.3.1 创建一个视频节点 200

12.3.2 视频播放 202

12.3.3 开始和结束 204

12.3.4 迪斯科舞小猫 206

12.4 形状节点 208

12.4.1 添加一个形状节点 209

12.4.2 形状节点基础 210

12.4.3 添加提示箭头 211

12.5 挑战 214

挑战1:提示无处不在 214

挑战2:当fillColor遇到fillTexture 214

第13章 中级tvOS 215

13.1 添加一个tvOS目标 215

上架图像和3D图标 216

13.2 将代码移植到tvOS 218

13.3 Apple TV遥控,第2轮 220

13.3.1 TV控制第1部分:谁应该采取

 行动 220

13.3.2 TV控制第2部分:停留在循

 环中 222

13.3.3 和Apple TV模拟器交互 225

13.3.4 TV控制第3部分:点击所有

 内容 226

13.4 挑战 227

挑战1:打磨Apple TV上的所有关卡 227



第三部分 果 汁



第14章 开发Drop Charge 232

14.1 开始 232

添加图片 233

14.2 在场景编辑器中构建游戏世界 234

14.2.1 配置场景 234

14.2.2 添加背景精灵 234

14.2.3 添加前景精灵 236

14.2.4 创建平台 236

14.2.5 创建金币 237

14.3 编写游戏设置代码 238

14.3.1 添加平台 238

14.3.2 更多平台 241

14.3.3 扔炸弹 241

14.3.4 获取物理效果 242

14.3.5 碰撞检测 243

14.3.6 使用Core Motion来控制玩家 244

14.3.7 相机跟踪 245

14.3.8 让岩浆流动 247

14.3.9 重复背景、金币和平台 249

14.3.10 还有一件事情 249

14.4 挑战 250

挑战1:创建跨5块的、可破裂的

 平台 250

挑战2:创建一个“特殊的”金币

 箭头 250

挑战3:创建额外的平台和金币

 样式 251

挑战4:为新的覆盖对象添加代码 252

第15章 状态机 254

15.1 状态机是如何工作的 254

15.2 开始 256

15.3 状态1:等待点击 256

15.4 状态2:等待炸弹 257

15.5 状态3:玩游戏 259

更新游戏设置 260

15.6 状态4:游戏结束 261

15.7 最后修改 262

15.8 挑战 263

挑战1:一个英雄状态机 263

第16章 粒子系统 265

16.1 粒子系统是如何工作的 266

16.1.1 粒子系统理论 266

16.1.2 粒子系统的实际应用 266

16.2 粒子系统编程 267

16.2.1 粒子系统的核心属性 268

16.2.2 让模拟提前进行 270

16.2.3 粒子系统的更多核心属性 271

16.2.4 范围属性 271

16.2.5 关键帧属性 271

16.2.6 序列属性 272

16.3 可视化地创建粒子系统 273

16.3.1 创建一个SKS文件 273

16.3.2 Xcode粒子发射器编辑器 274

16.3.3 制作岩浆 275

16.3.4 加载SKS文件 276

16.3.5 持续的系统和运行一次的

 系统 277

16.3.6 哪里有火,哪里就会有烟 277

16.3.7 目标粒子系统 279

16.4 挑战 280

挑战1:收集常规金币的效果 280

挑战2:收集特殊金币的效果 280

挑战3:破裂平台效果 280

挑战4:玩家轨迹效果 280

第17章 点亮游戏 282

17.1 给游戏添加果汁的3个步骤 283

17.1.1 步骤1:角色 283

17.1.2 步骤2:交互 283

17.1.3 步骤3:5种基本的特效 284

17.2 开始 285

17.3 音乐和声音效果 285

17.3.1 创建变化的节奏 286

17.3.2 添加声音效果 286

17.3.3 最后的声音效果 288

17.4 帧动画 289

17.4.1 可视化地创建动作 289

17.4.2 通过时间线编辑 290

17.4.3 使用金币应用 291

17.4.4 用代码实现动画动作 292

17.5 粒子效果 294

17.5.1 随机爆炸 295

17.5.2 增加力量粒子效果 296

17.5.3 游戏结束了 297

17.6 屏幕效果 297

振动、振动,还是振动 298

17.7 精灵效果 299

弹跳的平台 300

17.8 最后的修改 301

17.9 挑战 302

挑战1:创建一个“挤压和拉伸”效果 302

挑战2:将Drop Charge移植到tvOS上 302

17.10 如何继续学习 302



第四部分 GameplayKit



第18章 实体-组件系统 304

18.1 开始 304

18.1.1 游戏层 305

18.1.2 材质图册 305

18.2 GameplayKit简介 306

18.3 实体-组件系统 307

18.4 GameplayKit的实体-组件系统 308

18.5 第一个组件 308

18.6 第一个实体 309

18.7 将实体添加到场景 310

18.8 阴影组件 312

18.9 动画组件 313

18.9.1 GKComponentSystem 316

18.9.2 添加到实体 317

18.10 重用组件 318

18.11 发射组件 320

发射炮弹 322

18.12 挑战 324

挑战1:生命值组件 325

第19章 寻路算法 328

19.1 GameplayKit中的寻路 328

19.1.1 基于网格的寻路 328

19.1.2 基于障碍物的寻路 329

19.2 塔防障碍物 329

打开GameScene.sks 329

19.3 塔防选择器动画 332

19.4 选择塔防 334

19.5 显示菜单 335

19.6 放置塔防 336

19.7 创建障碍物图形 337

19.8 将塔防添加到障碍物图形 337

19.9 用寻路算法移动实体 338

19.10 挑战 341

挑战1:更多障碍物 341

挑战2:精灵的Z位置 344

第20章 代理、目标和行为 346

20.1 GameplayKit的代理、目标和行为 346

20.2 添加代理 347

20.3 添加行为和目标 348

20.4 在代理上设置行为 349

实现GKAgentDelegate 351

20.5 音乐插曲 352

20.6 攻击波 352

20.6.1 发送攻击波 354

20.6.2 随机选取起始位置 355

20.6.3 从攻击波中删除恐龙 356

20.7 HUD 358

20.8 减少生命数 359

20.9 花钱建造塔防 360

20.10 减慢速度效果 361

20.11 挑战 364

挑战1:TV版的Dino Defense 364



第五部分 高 级 话 题



第21章 贴图地图游戏 366

21.1 Delve简介 366

21.2 开始 367

21.2.1 开始关卡构建 368

21.2.2 创建一个基本的关卡 369

21.2.3 显示关卡 369

21.2.4 添加一个相机节点 371

21.3 打造一个基于贴图的关卡 372

预先设置关卡 374

21.4 实现状态机 375

21.5 游戏需要一个英雄人物 377

21.5.1 创建精灵组件 378

21.5.2 将英雄添加到场景中 378

21.5.3 创建动画组件 380

21.5.4 添加组件系统 384

21.5.5 让英雄移动起来 385

21.5.6 通过倾斜来移动 387

21.5.7 更新动画 389

21.5.8 将相机聚焦到英雄身上 390

21.5.9 添加碰撞 390

21.6 挑战 392

挑战1:定制关卡 392

第22章 随机性 393

22.1 随机意味着什么 393

22.2 GameplayKit的随机性 394

22.2.1 随机性分布 394

22.2.2 随机性源 396

22.3 醉汉行走算法 397

22.4 开始 397

22.5 实现醉汉行走算法 401

22.5.1 更新地图生成器 402

22.5.2 到达出口 404

22.6 制作更好的关卡 406

组合分布 408

22.7 挑战 411

挑战1:随机贴图 411

第23章 程序式关卡 412

23.1 基于房间的程序式关卡设计 412

23.2 构建更好的生成器 413

构建房间 413

23.3 填充地牢 417

23.3.1 处理生命值 418

23.3.2 引入石人 420

23.3.3 创建一个武器 427

23.4 挑战 431

挑战1:难度 432

第24章 游戏控制器 433

24.1 控制器格式 434

24.2 开始 434

24.3 创建控制器管理器 436

24.3.1 指定控制 439

24.3.2 标准游戏手柄 440

24.3.3 使用控制器命令 440

24.3.4 移动控制 442

24.3.5 扩展游戏手柄 443

24.4 添加tvOS目标 444

24.5 在tvOS上支持控制器 446

24.5.1 连接到控制器 447

24.5.2 微游戏手柄 447

24.5.3 绑定控制 449

24.6 挑战 450

挑战1暂停游戏 450



第六部分 额 外 章 节



第25章 Game Center成就 452

25.1 开始 452

25.2 Game Center简介 453

25.3 配置App以使用Game Center 454

25.3.1 打开Game Center 455

25.3.2 在iTune Connect上注册App 455

25.3.3 配置Game Center成就 457

25.4 认证本地玩家 459

25.4.1 认证回调 460

25.4.2 将认证加入到游戏中 460

25.5 添加成就 463

25.5.1 为成就创建一个辅助类 463

25.5.2 将成就整合到游戏中 464

25.6 初始化内建的用户界面 466

将UI加入到游戏中 467

25.7 挑战 469

挑战1:Racing addict和成就 469

第26章 Game Center排行榜 470

26.1 支持排行榜 470

26.1.1 步骤1:认证本地玩家 470

26.1.2 步骤2:创建一个排行榜

 策略 470

26.1.3 步骤3:在iTunes Connect中

 配置排行榜 471

26.1.4 步骤4:向Game Center报告

 得分 474

26.1.5 步骤5:向玩家显示排行榜 476

26.2 排行榜集合 477

26.3 Game Center的安全性 479

26.3.1 提交如何工作 480

26.3.2 限制作弊 480

26.4 挑战 480

挑战1:排行榜集合 480

第27章 ReplayKit 481

27.1 ReplayKit架构 481

27.2 整合ReplayKit 482

27.2.1 步骤1:创建一个策略来开始和

 停止记录 483

27.2.2 步骤2:修改用户界面 484

27.2.3 步骤3:检查可用性 488

27.2.4 步骤4:开始和停止记录 491

27.2.5 步骤5:预览和分享记录 496

第28章 iAd 498

28.1 iAd简介 498

28.2 iAd是如何工作的 498

28.3 Ad格式 499

28.3.1 横幅广告 499

28.3.2 间隙广告 500

28.3.3 媒介反馈广告 501

28.3.4 预滚动广告 501

28.4 整合iAd 501

28.5 加入iAd网络 501

28.6 加入iAd框架 502

28.7 显示横幅广告 504

28.8 显示间隙广告 506

28.9 iAd最佳实践 507

28.10 挑战 507

挑战1:自动显示 507

第29章 写给程序员的2D美工知识 508

29.1 选择路径:雇人还是DIY 508

29.1.1 雇佣一名美术师 508

29.1.2 自己做美工 508

29.2 如何找到并雇佣一位美术师 509

29.2.1 会议和聚会 509

29.2.2 Twitter 509

29.2.3 搜索简历 509

29.2.4 招募申请者 510

29.2.5 这真的有用吗 510

29.3 向美术师付酬 510

29.3.1 收入分成合同 510

29.3.2 固定报酬合同和分小时报酬 510

29.3.3 价格预期 511

29.4 开始 511

29.5 开始绘制草图 512

29.6 将草图导入到Illustrator中 515

29.7 用矢量线条描摹草图 517

29.7.1 编辑路径 519

29.7.2 创建复杂的线条 519

29.7.3 将线条的末端圆角化 520

29.7.4 完成轮廓 520

29.8 定制画笔宽度 520

29.8.1 为Illustrator创建一个默认的

 宽度样式 521

29.8.2 针对不同的线条形状,使用

 其他的宽度样式 521

29.9 给美工图上色 522

29.9.1 使用路径寻找器来组合

 形状 524

29.9.2 给眼睛上色 525

29.9.3 为某个区域上色 526

29.9.4 关于图层的一点说明 527

29.9.5 调整对象层的顺序 528

29.10 关于阴影和光线 529

29.10.1 表现深度的额外阴影细节 530

29.10.2 给轮廓上色 531

29.11 导出PNG文件 532

29.12 挑战 534

挑战1:老鼠 534

挑战2:小狗 534







iOS和tvOS 2D游戏开发教程 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:iOS和tvOS 2D游戏开发教程