Cocos2d-x實戰:C++卷(第2版)

《Cocos2d-x實戰:C++卷(第2版)》是2017年清華大學出版社出版的圖書,作者是關東升。

內容簡介

本書系統介紹了基於C++語言的Cocos2dx遊戲編程和開發技術。介紹了使用Cocos2dx中的核心類、瓦片地圖、物理引擎、音樂音效、數據持久化、GUI控制項、3D特性、網路通信、數據交換格式、記憶體管理、性能最佳化、平台移植、代碼版本管理以及套用商店發布產品。全書分為六篇: 基礎篇、進階篇、數據與網路篇、設計與最佳化篇、平台移植篇和實戰篇。

基礎篇是第2章~第8章,內容包括: Cocos2dx簡介、環境搭建、字元串、標籤、選單、精靈、場景、層、動作、特效、動畫和Cocos2dx用戶事件。進階篇是第9章~第14章,內容包括: 遊戲音樂與音效、粒子系統、瓦片地圖、物理引擎、Cocos2dx GUI控制項和Cocos2dx中的3D特性。數據與網路篇是第15章~第19章,內容包括: Cocos2dx數據結構、數據持久化、數據交換格式

目錄

序(王哲)Ⅰ

前言Ⅲ

第1章準備開始

1.1本書學習路線圖

1.2如何使用實例代碼

基礎篇

第2章Cocos2dx簡介與環境搭建

2.1移動平台遊戲引擎簡介

2.2Cocos2d家譜

2.3Cocos2dx設計目標

2.4在Windows平台下開發Cocos2dx遊戲

2.4.1使用Visual Studio開發工具

2.4.2下載和使用Cocos2dx案例

2.4.3生成API文檔

本章小結

第3章Hello Cocos2dx

3.1第一個Cocos2dx遊戲

3.1.1創建工程

3.1.2工程檔案結構

3.1.3代碼解釋

3.2Cocos2dx核心概念

3.2.1導演

3.2.2場景

3.2.3層

3.2.4精靈

3.2.5選單

3.3Node與Node層級架構

3.3.1Node中重要的操作

3.3.2Node中重要的屬性

3.3.3遊戲循環與調度

3.4Cocos2dx坐標系

3.4.1UI坐標

3.4.2OpenGL坐標

3.4.3世界坐標和模型坐標

3.4.4Win32平台下設定螢幕

本章小結

第4章字元串、標籤和選單

4.1Cocos2dx中的字元串

4.1.1使用const char*和std::string

4.1.2使用cocos2d::String

4.1.3Win32平台下中文亂碼問題

4.2使用標籤

4.2.1使用標籤類Label

4.2.2點陣圖字型

4.2.3圖片集標籤

4.2.4標籤中文無法顯示問題

4.3使用選單

4.3.1文本選單

4.3.2精靈選單和圖片選單

4.3.3開關選單

本章小結

第5章精靈

5.1Sprite精靈類

5.1.1創建Sprite精靈對象

5.1.2實例: 使用紋理對象創建Sprite對象

5.2精靈的性能最佳化

5.2.1使用紋理圖集

5.2.2使用精靈幀快取

本章小結

第6章場景與層

6.1場景與層的關係

6.2場景過渡

6.2.1場景過渡相關函式

6.2.2場景過渡動畫

6.3場景的生命周期

6.3.1生命周期函式

6.3.2多場景過渡生命周期

本章小結

第7章動作、特效和動畫

7.1動作

7.1.1瞬時動作

7.1.2間隔動作

7.1.3組合動作

7.1.4動作速度控制

7.1.5函式調用

7.2特效

7.2.1格線動作

7.2.2實例: 特效演示

7.3動畫

7.3.1幀動畫

7.3.2實例: 幀動畫使用

本章小結

第8章Cocos2dx用戶事件

8.1事件處理機制

8.1.1事件分發器

8.1.2觸摸事件

8.1.3實例: 單點觸摸事件

8.1.4實例: 使用Lambda表達式

8.1.5鍵盤事件

8.1.6滑鼠事件

8.2在層中進行事件處理

8.2.1觸摸事件

8.2.2實例: 單點觸摸事件

8.3加速度計與加速度事件

8.3.1加速度計

8.3.2使用事件分發器

8.3.3使用層加速度計事件

8.3.4實例: 運動的小球

本章小結

進階篇

第9章遊戲背景音樂與音效

9.1Cocos2dx中音頻檔案

9.1.1音頻檔案介紹

9.1.2Cocos2dx跨平台音頻支持

9.2使用Audio引擎

9.2.1音頻檔案的預處理

9.2.2播放背景音樂

9.2.3停止播放背景音樂

9.2.4背景音樂播放暫停與繼續

9.3實例: 設定背景音樂與音效

9.3.1AppDelegate實現

9.3.2HelloWorld場景實現

9.3.3設定場景實現

本章小結

第10章粒子系統

10.1問題的提出

10.2粒子系統基本概念

10.2.1實例: 打火機

10.2.2粒子發射模式

10.2.3粒子系統屬性

10.3Cocos2dx內置粒子系統

10.3.1內置粒子系統

10.3.2實例: 內置粒子系統

10.4自定義粒子系統

10.4.1代碼創建

10.4.2plist檔案創建

本章小結

第11章瓦片地圖

11.1地圖性能問題

11.2Cocos2dx中瓦片地圖API

11.3實例: 忍者無敵

11.3.1設計地圖

11.3.2程式中載入地圖

11.3.3移動精靈

11.3.4檢測碰撞

11.3.5滾動地圖

本章小結

第12章物理引擎

12.1使用物理引擎

12.1.1物理引擎核心概念

12.1.2物理引擎與精靈關係

12.2Cocos2dx 3.x中物理引擎封裝

12.2.1Cocos2dx 3.x物理引擎API

12.2.2實例: HelloPhysicsWorld

12.2.3實例: 接觸與碰撞檢測

12.2.4實例: 使用關節

12.3Box2D引擎

12.3.1Box2D核心概念

12.3.2使用Box2D物理引擎的一般步驟

12.3.3實例: HelloBox2D

12.3.4實例: 接觸與碰撞檢測

12.3.5實例: 使用關節

本章小結

第13章Cocos2dx GUI控制項

13.1按鈕

13.2ImageView

13.3文本控制項

13.3.1Text

13.3.2TextBMFont

13.3.3RichText

13.4RadioButton和RadioButtonGroup

13.5CheckBox

13.6LoadingBar

13.7滑塊控制項

本章小結

第14章Cocos2dx中的3D特性

14.1一些3D概念

14.1.1格線和模型

14.1.2相機

14.1.3投影

14.2使用3D精靈

14.2.1創建Sprite3D對象

14.2.2實例: 使用模型和紋理Sprite3D對象

14.33D模型檔案格式

14.4使用相機

14.4.1創建和設定Camera對象

14.4.2實例: 使用Camera對象

14.53D粒子系統

14.5.1創建PUParticleSystem3D對象

14.5.2實例: 創建Particle Universe 3D粒子

本章小結

數據與網路篇

第15章Cocos2dx數據結構

15.1Cocos2dx中兩大類——Ref和Value

15.1.1Cocos2dx根類Ref

15.1.2包裝類Value

15.2Ref列表結構

15.2.1Array結構

15.2.2實例: Array結構

15.2.3VectorT結構

15.2.4實例: Vector結構

15.3Ref字典結構

15.3.1Dictionary結構

15.3.2實例: Dictionary結構

15.3.3MapK,V結構

15.3.4實例: MapK,V結構

15.4Value列表結構——ValueVector

15.4.1ValueVector常用API

15.4.2實例: 使用ValueVector結構

15.5Value字典結構——ValueMap和ValueMapIntKey

15.5.1ValueMap和ValueMapIntKey常用API

15.5.2實例: 使用ValueMap結構

本章小結

第16章數據持久化

16.1使用FileUtils訪問檔案

16.1.1Cocos2dx中的目錄

16.1.2實例: 檔案讀寫

16.1.3實例: 路徑搜尋

16.2持久化概述

16.3UserDefault數據持久化

16.3.1UserDefaultAPI

16.3.2實例: 保存背景音樂和音效設定

16.4屬性列表數據持久化

16.4.1屬性列表概述

16.4.2實例: MyNotes

16.4.3使用Dictionary讀寫屬性列表檔案

16.4.4使用ValueMap讀寫屬性列表檔案

16.4.5使用ValueVector讀取屬性列表檔案

16.5SQLite資料庫數據持久化

16.5.1SQLite資料庫介紹

16.5.2Visual Studio下SQLite資料庫開發環境設定

16.5.3實例: 重構MyNotes

16.5.4創建資料庫

16.5.5SQLite資料庫管理工具

16.5.6查詢數據

16.5.7修改數據

本章小結

第17章數據交換格式

17.1CSV數據交換格式

17.1.1文檔結構

17.1.2CSV格式解碼

17.2XML數據交換格式

17.2.1文檔結構

17.2.2SAX解析

17.2.3DOM解析

17.3JSON數據交換格式

17.3.1文檔結構

17.3.2JSON框架jsoncpp和rapidjson比較

17.3.3實例: rapidjson解碼

17.3.4實例: rapidjson編碼

本章小結

第18章基於HTTP的網路通信

18.1網路結構

18.1.1客戶端伺服器結構網路

18.1.2點對點結構網路

18.2HTTP與HTTPS協定

18.3使用cURL開發客戶端

18.3.1cURL與libcurl庫

18.3.2Visual Studio下libcurl庫開發環境設定

18.3.3實例: 重構MyNotes

18.4使用HttpClient開發客戶端

18.4.1HttpClientAPI

18.4.2Visual Studio下HttpClient開發環境設定

18.4.3實例: 重構MyNotes

本章小結

第19章基於Node.js的Socket.IO網路通信

19.1Node.js

19.1.1Node.js安裝

19.1.2Node.js測試

19.2使用Socket.IO

19.2.1Socket.IO伺服器端開發

19.2.2Cocos2dx的Socket.IO客戶端

本章小結

設計與最佳化篇

第20章Cocos2dx中的常用設計模式

20.1單例設計模式

20.1.1問題提出

20.1.2實現原理

20.1.3套用案例

20.2委託設計模式

20.2.1問題提出

20.2.2實現原理

20.2.3套用案例

20.3觀察者設計模式與通知機制

20.3.1問題提出

20.3.2實現原理

20.3.3通知機制

本章小結

第21章Cocos2dx中的記憶體管理

21.1C++記憶體管理

21.1.1記憶體分配區域

21.1.2動態記憶體分配

21.2Ref記憶體管理

21.2.1記憶體引用計數

21.2.2自動釋放池

21.2.3Ref記憶體管理規則

21.3Ref記憶體管理設計模式

21.3.1使用靜態構造函式

21.3.2使用訪問器

21.4其他類型記憶體管理

21.4.1Value記憶體管理

21.4.2VectorT和MapK,V記憶體管理

本章小結

第22章性能最佳化

22.1工具

22.1.1Xcode中Instruments工具使用

22.1.2使用Windows任務管理器

22.1.3Visual Studio記憶體泄漏檢測工具——Visual Leak Detector

22.1.4左下角的文字是什麼

22.2使用SpriteBatchNode批次渲染

22.3合理使用快取

22.3.1場景與資源

22.3.2快取創建和清除時機

22.4圖片與紋理最佳化

22.4.1選擇圖片格式

22.4.2拼圖

22.4.3紋理像素格式

22.4.4紋理快取異步載入

22.4.5背景圖片最佳化

22.5聲音最佳化

22.5.1聲音格式最佳化

22.5.2聲音預處理與清除

22.6多執行緒並發訪問

22.6.1std::thread多執行緒技術

22.6.2異步預處理聲音

22.7SQLite資料庫最佳化

22.7.1表結構最佳化

22.7.2查詢最佳化

22.7.3插入(或刪除)最佳化

22.8數據交換格式最佳化

本章小結

平台移植篇

第23章從Win32平台到Android平台移植

23.1搭建交叉編譯和打包環境

23.1.1Android SDK安裝

23.1.2管理Android SDK

23.1.3管理Android開發模擬器

23.1.4Android NDK安裝

23.1.5設定環境變數

23.2交叉編譯、打包和運行

23.2.1使用cocos命令行工具

23.2.2Android.mk編譯檔案

23.3移植問題匯總

23.3.1中文亂碼問題

23.3.2SQLite3資料庫移植問題

23.3.3JSON框架rapidjson移植問題

23.3.4libcurl庫移植問題

23.3.5libNetwork庫移植問題

23.3.6橫屏與豎屏設定問題

本章小結

第24章從Win32平台到iOS平台移植

24.1iOS開發環境搭建

24.1.1Xcode安裝和卸載

24.1.2Xcode操作界面

24.2從Visual Studio工程到Xcode工程

24.2.1添加源檔案

24.2.2添加資源檔案

24.2.3Xcode中編譯並運行

24.3移植問題匯總

24.3.1中文亂碼問題

24.3.2SQLite3資料庫移植問題

24.3.3JSON框架rapidjson移植問題

24.3.4libcurl庫移植問題

24.3.5聲音移植問題

24.3.6使用PVR紋理格式

24.3.7橫屏與豎屏設定問題

本章小結

第25章Cocos2dx多解析度螢幕適配

25.1螢幕適配問題的提出

25.2Cocos2dx螢幕適配

25.2.1三種解析度

25.2.2解析度適配策略

25.2.3紋理圖集資源適配

25.2.4瓦片地圖資源適配

本章小結

實戰篇

第26章使用Git管理程式代碼版本

26.1代碼版本管理工具——Git

26.1.1版本控制歷史

26.1.2術語和基本概念

26.1.3Git環境配置

26.1.4Git常用命令

26.2代碼託管服務——GitHub

26.2.1創建和配置GitHub賬號

26.2.2創建代碼庫

26.2.3刪除代碼庫

26.2.4派生代碼庫

26.2.5GitHub協同開發

26.3實例: Cocos2dx遊戲項目協同開發

26.3.1提交到GitHub代碼庫

26.3.2克隆GitHub代碼庫

26.3.3重新獲得GitHub代碼庫

本章小結

第27章Cocos2dx敏捷開發項目實戰——迷失航線手機遊戲

27.1迷失航線遊戲分析與設計

27.1.1迷失航線故事背景

27.1.2需求分析

27.1.3原型設計

27.1.4遊戲腳本

27.2任務1: 遊戲工程的創建與初始化

27.2.1疊代1.1: 創建工程

27.2.2疊代1.2: 多解析度支持

27.2.3疊代1.3: 通用類與基類維護

27.2.4疊代1.4: 發布到GitHub

27.3任務2: 創建Loading場景

27.3.1疊代2.1: 添加場景和層

27.3.2疊代2.2: Loading動畫

27.3.3疊代2.3: 異步載入紋理快取

27.3.4疊代2.4: 異步預處理聲音

27.4任務3: 創建Home場景

27.4.1疊代3.1: 添加場景和層

27.4.2疊代3.2: 添加選單

27.5任務4: 創建設定場景

27.6任務5: 創建幫助場景

27.7任務6: 遊戲場景實現

27.7.1疊代6.1: 創建敵人精靈

27.7.2疊代6.2: 創建玩家飛機精靈

27.7.3疊代6.3: 創建炮彈精靈

27.7.4疊代6.4: 初始化遊戲場景

27.7.5疊代6.5: 遊戲場景選單實現

27.7.6疊代6.6: 玩家飛機發射炮彈

27.7.7疊代6.7: 炮彈與敵人的接觸檢測

27.7.8疊代6.8: 玩家飛機與敵人的接觸檢測

27.7.9疊代6.9: 玩家飛機生命值顯示

27.7.10疊代6.10: 顯示玩家得分情況

27.8任務7: 遊戲結束場景

本章小結

第28章把迷失航線遊戲發布到Google play套用商店

28.1谷歌Android套用商店Google play

28.2Android設備測試

28.3還有“最後一公里”

28.3.1添加圖示

28.3.2生成數字簽名檔案

28.3.3應用程式打包

28.4發布產品

28.4.1上傳APK

28.4.2填寫商品詳細信息

28.4.3定價和發布範圍

本章小結

第29章把迷失航線遊戲發布到蘋果App Store

29.1蘋果的App Store

29.2還有“最後一公里”

29.2.1添加圖示

29.2.2添加啟動界面

29.2.3修改發布產品屬性

29.3iOS設備測試

29.3.1Xcode設定

29.3.2設備設定

29.4為發布進行編譯

29.4.1創建開發者證書

29.4.2創建App ID

29.4.3創建描述檔案

29.4.4發布編譯

29.5發布上架

29.5.1創建套用

29.5.2套用定價

29.5.3基本信息輸入

29.5.4上傳套用

29.5.5提交審核

29.6常見審核通不過的原因

29.6.1功能問題

29.6.2用戶界面問題

29.6.3商業問題

29.6.4不當內容

29.6.5其他問題

本章小結

相關詞條

熱門詞條

聯絡我們