目錄
前言 .1
第1 章 游戲的設計 9
1.1 設計游戲引擎 .9
1.2 創(chuàng)建基于繼承的設計 10
1.3 創(chuàng)建基于組件的設計 12
1.4 用 GameplayKit 創(chuàng)建基于組件的游戲設計 16
1.5 計算屏幕的幀刷新時間 18
1.6 進入和退出游戲 .19
1.7 用定時器進行游戲的刷新 22
1.8 每幀刷新 .23
1.9 游戲暫停 .24
1.10 記錄游戲時間 25
1.11 使用閉包 26
1.12 在方法中回調閉包 29
1.13 使用 Operation Queues .30
1.14 延遲執(zhí)行 32
1.15 串行執(zhí)行 33
1.16 通過閉包進行數組的過濾 34
1.17 加載游戲資源 35
1.18 在游戲中使用單元測試 36
.19 二維網格 39
1.20 使用隨機數 .40
1.21 編寫狀態(tài)機 .42
第2 章 視圖和菜單 . 46
2.1 使用故事板 47
2.2 創(chuàng)建視圖控制器 .53
2.3 通過Segue 導航到不同屏幕 60
2.4 使用布局約束進行布局 65
2.5 導入圖片到項目 68
2.6 切割按鈕的背景圖片 70
2.7 用UIDynamics 創(chuàng)建動畫視圖 71
2.8 用Core Animation 移動圖片.74
2.9 旋轉圖片 75
2.10 實現視圖的彈起效果 77
2.11 用UIAppearance 主題化UI 樣式 79
2.12 對UIView 進行3D 旋轉 .80
2.13 在游戲內容之上顯示菜單 83
2.14 創(chuàng)建高效的游戲菜單 84
第3 章 輸入 . 86
3.1 偵測觸摸 87
3.2 處理輕觸手勢 .88
3.3 在屏幕上拖動圖片 .90
3.4 識別旋轉手勢 .92
3.5 識別捏合手勢 94
3.6 自定義手勢 96
3.7 在視圖的指定區(qū)域識別觸摸 .100
3.8 識別搖晃手勢 101
3.9 識別設備傾斜手勢 .102
3.10 獲得指北針方向 106
3.11 獲得用戶的位置 108
3.12 計算運動速度 112
3.13 計算用戶與目標的距離 113
3.14 當用戶進入或離開某個位置時獲得通知 . 114
3.15 通過地名獲得坐標 118
3.16 通過坐標獲得地名 119
3.17 將設備當作方向盤 121
3.18 測量磁場 122
3.19 利用輸入改善游戲設計 124
第4 章 聲音 126
4.1 用 AVAudioPlayer 播放聲音 .126
4.2 用AVAudioRecorder 進行錄音 .130
4.3 使用多個AVAudioPlayer .131
4.4 兩個聲音間的淡入淡出 133
4.5 合成語音 .136
4.6 獲知音樂程序當前播放曲目 137
4.7 當前曲目何時改變 .140
4.8 音樂回放控制 141
4.9 讓用戶選擇音樂 142
4.10 當其他App 正在播放音樂時的操作 145
4.11 在游戲中使用哪種聲音播放模式最好 147
第5 章 存儲數據 148
5.1 保存游戲狀態(tài) 148
5.2 在本地保存游戲得分 .150
5.3 用 iCloud 保存游戲進度 .151
5.4 使用iCloud 的鍵– 值存儲 .157
5.5 何時使用文件,何時使用數據庫 159
5.6 管理資源集 160
5.7 用NSUserDefaults 存放數據 .162
5.8 最佳數據存儲策略 .164
5.9 游戲中的財富值 .165
5.10 保存到CloudKit 166
5.11 向CloudKit 數據庫中添加記錄 .168
5.12 查詢CloudKit 數據庫中的記錄 .169
5.13 從CloudKit 數據庫中刪除記錄 .173
第6 章 2D 圖形和Sprite Kit 175
6.1 熟悉二維數學 176
6.2 創(chuàng)建Sprite Kit 視圖 183
6.3 創(chuàng)建場景 .184
6.4 加入精靈 187
6.5 文本精靈 .188
6.6 獲取有效字體 190
6.7 使用自定義字體 .191
6.8 場景切換 191
6.9 移動精靈和標簽 194
6.10 紋理貼圖精靈 197
6.11 紋理圖集 197
6.12 形狀節(jié)點 198
6.13 混合模式 200
6.14 對精靈使用濾鏡 .201
6.15 貝塞爾曲線 202
6.16 煙霧、火焰和粒子特效 204
6.17 抖動屏幕 205
6.18 動畫精靈 207
6.19 視差滾動 208
6.20 噪聲圖 215
第7 章 物理學 217
7.1 物理學術語和定義 .217
7.2 為精靈添加物理特性 .219
7.3 靜止物體和運動物體 .220
7.4 定義碰撞體的形狀 .221
7.5 速度 224
7.6 質量、大小和密度 .224
7.7 創(chuàng)建墻壁 .226
7.8 設置重力 .227
7.9 讓物體無法旋轉 .229
7.10 改變物理模擬世界的時鐘 .229
7.11 碰撞檢測 230
7.12 查找物體 231
7.13 連接 233
7.14 作用力 235
7.15 在物體上添加推進器 .236
7.16 制造爆炸 237
7.17 根據設備方向改變重力 239
7.18 拖動物體 241
7.19 創(chuàng)建車輛 243
第8 章 Scene Kit . 246
8.1 使用Scene Kit .246
8.2 創(chuàng)建一個Scene Kit 場景 247
8.3 顯示3D 對象 248
8.4 Scene Kit 的鏡頭 248
8.5 創(chuàng)建燈光 .249
8.6 移動 251
8.7 使用文本節(jié)點 252
8.8 自定義材質 252
8.9 紋理對象 .254
8.10 法向貼圖 254
8.11 約束對象 255
8.12 加載3D 模型文件 256
8.13 3D 物理學 257
8.14 反射 258
8.15 點擊測試 259
8.16 加載場景文件 .260
8.17 粒子系統(tǒng) 260
8.18 Metal 261
第9 章 人工智能和行為 263
9.1 Swift 使向量計算更輕松263
9.2 讓對象朝某個點移動 266
9.3 跟隨路徑 .268
9.4 攔截運動物體 269
9.5 逃逸 270
9.6 目標選擇問題 271
9.7 轉向問題 272
9.8 隱蔽點問題 273
9.9 路徑算法 274
9.10 網格中的路徑查找 279
9.11 計算下一步問題 280
9.12 判斷對象能否“看見”其他對象 281
9.13 用NSLinguisticTagger 作詞性標注 .283
9.14 用 AVFoundation 框架訪問相機 285
9.15 導入 Core ML 模型 288
9.16 識別圖片中的物體 289
9.17 用人工智能增強游戲設計 293
第10 章 使用外設 294
10.1 檢測控制器 .296
10.2 從游戲控制器中獲得輸入 298
10.3 通過AirPlay 顯示游戲內容 .300
10.4 使用擴展屏幕 301
10.5 為不同的屏幕適配UI 303
10.6 拖放 307
10.7 用 UIFeedbackGenerator 實現觸覺回饋 .313
10.8 用ReplayKit 記錄屏幕 315
10.9 用ARKit 顯示AR 畫面 .318
10.10 AR 場景的點擊測試 322
10.11 用 TestFight 測試 APP 325
10.12 用Fastlane 構建和發(fā)布APP .326
第11 章 性能和調試 327
11.1 改善幀刷新率 .327
11.2 快速加載關卡 .330
11.3 解決內存不足問題 331
11.4 查找崩潰原因 .333
11.5 使用紋理壓縮 .334
11.6 使用watchpoint .338
11.7 記錄日志 339
11.8 創(chuàng)建語音斷點 .340