第1篇 設計模式與遊戲設計
第1章 遊戲實現中的設計模式 2
1.1 設計模式的起源 2
1.2 軟件的設計模式是什麼? 3
1.3 麵嚮對象設計中常見的設計原則 4
1.4 為什麼要學習設計模式 7
1.5 遊戲程序設計與設計模式 8
1.6 模式的應用與學習方式 10
1.7 結論 11
第2章 遊戲範例說明 12
2.1 遊戲範例 12
2.2 GoF的設計模式範例 15
第2篇 基礎係統
第3章 遊戲場景的轉換——狀態模式(State) 20
3.1 遊戲場景 20
3.1.1 場景的轉換 20
3.1.2 遊戲場景可能的實現方式 23
3.2 狀態模式(State) 24
3.2.1 狀態模式(State)的定義 24
3.2.2 狀態模式(State)的說明 25
3.2.3 狀態模式(State)的實現範例 25
3.3 使用狀態模式(State)實現遊戲場景的轉換 28
3.3.1 SceneState的實現 28
3.3.2 實現說明 29
3.3.3 使用狀態模式(State)的優點 35
3.3.4 遊戲執行流程及場景轉換說明 36
3.4 狀態模式(State)麵對變化時 37
3.5 結論 37
第4章 遊戲主要類——外觀模式(Facade) 39
4.1 遊戲子功能的整閤 39
4.2 外觀模式(Facade) 41
4.2.1 外觀模式(Facade)的定義 41
4.2.2 外觀模式(Facade)的說明 42
4.2.3 外觀模式(Facade)的實現說明 43
4.3 使用外觀模式(Facade)實現遊戲主程序 44
4.3.1 遊戲主程序架構設計 44
4.3.2 實現說明 45
4.3.3 使用外觀模式(Facade)的優點 47
4.3.4 實現外觀模式(Facade)時的注意事項 48
4.4 外觀模式(Facade)麵對變化時 48
4.5 結論 48
第5章 獲取遊戲服務的唯一對象——單例模式(Singleton) 50
5.1 遊戲實現中的唯一對象 50
5.2 單例模式(Singleton) 51
5.2.1 單例模式(Singleton)的定義 51
5.2.2 單例模式(Singleton)的說明 51
5.2.3 單例模式(Singleton)的實現範例 52
5.3 使用單例模式(Singleton)獲取唯一的遊戲服務對象 53
5.3.1 遊戲服務類的單例模式實現 53
5.3.2 實現說明 54
5.3.3 使用單例模式(Singleton)後的比較 55
5.3.4 反對使用單例模式(Singleton)的原因 55
5.4 少用單例模式(Singleton)時如何方便地引用到單一對象 58
5.5 結論 63
第6章 遊戲內各係統的整閤——中介者模式(Mediator) 64
6.1 遊戲係統之間的溝通 64
6.2 中介者模式(Mediator) 68
6.2.1 中介者模式(Mediator)的定義 69
6.2.2 中介者模式(Mediator)的說明 69
6.2.3 中介者模式(Mediator)的實現範例 69
6.3 中介者模式(Mediator)作為係統之間的溝通接口 72
6.3.1 使用中介者模式(Mediator)的係統架構 73
6.3.2 實現說明 73
6.3.3 使用中介者模式(Mediator)的優點 79
6.3.4 實現中介者模式(Mediator)時的注意事項 79
6.4 中介者模式(Mediator)麵對變化時 80
6.5 結論 80
第7章 遊戲的主循環——Game Loop 82
7.1 GameLoop由此開始 82
7.2 怎麼實現遊戲循環(Game Loop) 84
7.3 在Unity3D中實現遊戲循環 85
7.4 P級陣地的遊戲循環 89
7.5 結論 92
第3篇 角色的設計
第8章 角色係統的設計分析 94
8.1 遊戲角色的架構 94
8.2 角色類的規劃 95
第9章 角色與武器的實現——橋接模式(Bridge) 98
9.1 角色與武器的關係 98
9.2 橋接模式(Bridge) 103
9.2.1 橋接模式(Bridge)的定義 103
9.2.2 橋接模式(Bridge)的說明 107
9.2.3 橋接模式(Bridge)的實現範例 108
9.3 使用橋接模式(Bridge)實現角色與武器接口 110
9.3.1 角色與武器接口設計 110
9.3.2 實現說明 111
9.3.3 使用橋接模式(Bridge)的優點 116
9.3.4 實現橋接模式(Bridge)的注意事項 116
9.4 橋接模式(Bridge)麵對變化時 116
9.5 結論 117
第10章 角色屬性的計算——策略模式(Strategy) 118
10.1 角色屬性的計算需求 118
10.2 策略模式(Strategy) 121
10.2.1 策略模式(Strategy)的定義 122
10.2.2 策略模式(Strategy)的說明 122
10.2.3 策略模式(Strategy)的實現範例 123
10.3 使用策略模式(Strategy)實現攻擊計算 124
10.3.1 攻擊流程的實現 125
10.3.2 實現說明 125
10.3.3 使用策略模式(Strategy)的優點 132
10.3.4 實現策略模式(Strategy)時的注意事項 133
10.4 策略模式(Strategy)麵對變化時 134
10.5 結論 135
第11章 攻擊特效與擊中反應——模闆方法模式(Template Method) 137
11.1 武器的攻擊流程 137
11.2 模闆方法模式(Template Method) 139
11.2.1 模闆方法模式(Template Method)的定義 139
11.2.2 模闆方法模式(Template Method)的說明 141
11.2.3 模闆方法模式(Template Method)的實現範例 141
11.3 使用模闆方法模式實現攻擊與擊中流程 142
11.3.1 攻擊與擊中流程的實現 143
11.3.2 實現說明 143
11.3.3 運用模闆方法模式(Template Method)的優點 145
11.3.4 修改擊中流程的實現 145
11.4 模闆方法模式(Template Method)麵對變化時 147
11.5 結論 149
第12章 角色AI——狀態模式(State) 150
12.1 角色的AI 150
12.2 狀態模式(State) 158
12.3 使用狀態模式(State)實現角色AI 159
12.3.1 角色AI的實現 159
12.3.2 實現說明 160
12.3.3 使用狀態模式(State)的優點 169
12.3.4 角色AI執行流程 169
12.4 狀態模式(State)麵對變化時 170
12.5 結論 172
第13章 角色係統 174
13.1 角色類 174
13.2 遊戲角色管理係統 176
第4篇 角色的産生
第14章 遊戲角色的産生——工廠方法模式(Factory Method) 183
14.1 産生角色 183
14.2 工廠方法模式(Factory Method) 188
14.2.1 工廠方法模式(Factory Method)的定義 188
14.2.2 工廠方法模式(Factory Method)的說明 189
14.2.3 工廠方法模式(Factory Method)的實現範例 189
14.3 使用工廠方法模式(Factory Method)産生角色對象 195
14.3.1 角色工廠類 195
14.3.2 實現說明 196
14.3.3 使用工廠方法模式(Factory Method)的優點 199
14.3.4 工廠方法模式(Factory Method)的實現說明 199
14.4 工廠方法模式(Factory Method)麵對變化時 203
14.5 結論 205
第15章 角色的組裝——建造者模式(Builder) 206
15.1 角色功能的組裝 206
15.2 建造者模式(Builder) 213
15.2.1 建造者模式(Builder)的定義 213
15.2.2 建造者模式(Builder)的說明 214
15.2.3 建造者模式(Builder)的實現範例 215
15.3 使用建造者模式(Builder)組裝角色的各項功能 217
15.3.1 角色功能的組裝 218
15.3.2 實現說明 219
15.3.3 使用建造者模式(Builder)的優點 226
15.3.4 角色建造者的執行流程 226
15.4 建造者模式(Builder)麵對變化時 227
15.5 結論 228
第16章 遊戲屬性管理功能——享元模式(Flyweight) 229
16.1 遊戲屬性的管理 229
16.2 享元模式(Flyweight) 236
16.2.1 享元模式(Flyweight)的定義 236
16.2.2 享元模式(Flyweight)的說明 237
16.2.3 享元模式(Flyweight)的實現範例 238
16.3 使用享元模式(Flyweight)實現遊戲 242
16.3.1 SceneState的實現 242
16.3.2 實現說明 245
16.3.3 使用享元模式(Flyweight)的優點 250
16.3.4 享元模式(Flyweight)的實現說明 250
16.4 享元模式(Flyweight)麵對變化時 252
16.5 結論 252
第5篇 戰爭開始
第17章 Unity3D的界麵設計——組閤模式(Composite) 254
17.1 玩傢界麵設計 254
17.2 組閤模式(Composite) 259
17.2.1 組閤模式(Composite)的定義 259
17.2.2 組閤模式(Composite)的說明 260
17.2.3 組閤模式(Composite)的實現範例 261
17.2.4 分瞭兩個子類但是要使用同一個操作界麵 264
17.3 Unity3D遊戲對象的分層式管理功能 265
17.3.1 遊戲對象的分層管理 265
17.3.2 正確有效地獲取UI的遊戲對象 266
17.3.3 遊戲用戶界麵的實現 267
17.3.4 兵營界麵的實現 269
17.4 結論 274
第18章 兵營係統及兵營信息顯示 276
18.1 兵營係統 276
18.2 兵營係統的組成 277
18.3 初始兵營係統 281
18.4 兵營信息的顯示流程 287
第19章 兵營訓練單位——命令模式(Command) 288
19.1 兵營界麵上的命令 288
19.2 命令模式(Command) 291
19.2.1 命令模式(Command)的定義 291
19.2.2 命令模式(Command)的說明 294
19.2.3 命令模式(Command)的實現範例 294
19.3 使用命令模式(Command)實現兵營訓練角色 297
19.3.1 訓練命令的實現 297
19.3.2 實現說明 298
19.3.3 執行流程 302
19.3.4 實現命令模式(Command)時的注意事項 303
19.4 命令模式(Command)麵對變化時 305
19.5 結論 306
第20章 關卡設計——責任鏈模式(Chain of Responsibility) 307
20.1 關卡設計 307
20.2 責任鏈模式(Chain of Responsibility) 312
20.2.1 責任鏈模式(Chain of Responsibility)的定義 312
20.2.2 責任鏈模式(Chain of Responsibility)的說明 314
20.2.3 責任鏈模式(Chain of Responsibility)的實現範例 314
20.3 使用責任鏈模式(Chain of Responsibility)實現關卡係統 317
20.3.1 關卡係統的設計 317
20.3.2 實現說明 318
20.3.3 使用責任鏈模式(Chain of Responsibility)的優點 329
20.3.4 實現責任鏈模式(Chain of Responsibility)時的注意事項 329
20.4 責任鏈模式(Chain of Responsibility)麵對變化時 330
20.5 結論 332
第6篇 輔助係統
第21章 成就係統—觀察者模式(Observer) 334
21.1 成就係統 334
21.2 觀察者模式(Observer) 338
21.2.1 觀察者模式(Observer)的定義 338
21.2.2 觀察者模式(Observer)的說明 340
21.2.3 觀察者模式(Observer)的實現範例 341
21.3 使用觀察者模式(Observer)實現成就係統 344
21.3.1 成就係統的新架構 344
21.3.2 實現說明 346
21.3.3 使用觀察者模式(Observer)的優點 358
21.3.4 實現觀察者模式(Observer)時的注意事項 358
21.4 觀察者模式(Observer)麵對變化時 359
21.5 結論 361
第22章 存盤功能—備忘錄模式(Memento) 362
22.1 存儲成就記錄 362
22.2 備忘錄模式(Memento) 366
22.2.1 備忘錄模式(Memento)的定義 366
22.2.2 備忘錄模式(Memento)的說明 367
22.2.3 備忘錄模式(Memento)的實現範例 367
22.3 使用備忘錄模式(Memento)實現成就記錄的保存 371
22.3.1 成就記錄保存的功能設計 371
22.3.2 實現說明 371
22.3.3 使用備忘錄模式(Memento)的優點 374
22.3.4 實現備忘錄模式(Memento)的注意事項 374
22.4 備忘錄模式(Memento)麵對變化時 374
22.5 結論 375
第23章 角色信息查詢—訪問者模式(Visitor) 376
23.1 角色信息的提供 376
23.2 訪問者模式(Visitor) 385
23.2.1 訪問者模式(Visitor)的定義 386
23.2.2 訪問者模式(Visitor)的說明 390
23.2.3 訪問者模式(Visitor)的實現範例 392
23.3 使用訪問者模式(Visitor)實現角色信息查詢 397
23.3.1 角色信息查詢的實現設計 397
23.3.2 實現說明 398
23.3.3 使用訪問者模式(Visitor)的優點 405
23.3.4 實現訪問者模式(Visitor)時的注意事項 405
23.4 訪問者模式(Visitor)麵對變化時 405
23.5 結論 408
第7篇 調整與優化
第24章 前綴字尾—裝飾模式(Decorator) 410
24.1 前綴後綴係統 410
24.2 裝飾模式(Decorator) 415
24.2.1 裝飾模式(Decorator)的定義 415
24.2.2 裝飾模式(Decorator)的說明 418
24.2.3 裝飾模式(Decorator)的實現範例 419
24.3 使用裝飾模式(Decorator)實現前綴後綴的功能 422
24.3.1 前綴後綴功能的架構設計 423
24.3.2 實現說明 423
24.3.3 使用裝飾模式(Decorator)的優點 433
24.3.4 實現裝飾模式(Decorator)時的注意事項 433
24.4 裝飾模式(Decorator)麵對變化時 434
24.5 結論 435
第25章 俘兵—適配器模式(Adapter) 436
25.1 遊戲的寵物係統 436
25.2 適配器模式(Adapter) 440
25.2.1 適配器模式(Adapter)的定義 440
25.2.2 適配器模式(Adapter)的說明 441
25.2.3 適配器模式(Adapter)的實現範例 441
25.3 使用適配器模式(Adapter)實現俘兵係統 443
25.3.1 俘兵係統的架構設計 443
25.3.2 實現說明 443
25.3.3 與俘兵相關的新增部分 445
25.3.4 使用適配器模式(Adapter)的優點 450
25.4 適配器模式(Adapter)麵對變化時 450
25.5 結論 451
第26章 加載速度的優化—代理模式(Proxy) 453
26.1 最後的係統優化 453
26.2 代理模式(Proxy) 457
26.2.1 代理模式(Proxy)的定義 458
26.2.2 代理模式(Proxy)的說明 458
26.2.3 代理模式(Proxy)的實現範例 459
26.3 使用代理模式(Proxy)測試和優化加載速度 460
26.3.1 優化加載速度的架構設計 460
26.3.2 實現說明 461
26.3.3 使用代理模式(Proxy)的優點 464
26.3.4 實現代理模式(Proxy)時的注意事項 464
26.4 代理模式(Prory)麵對變化時 466
26.5 結論 466
第8篇 未明確使用的模式
第27章 迭代器模式(Iterator)、原型模式(Prototype)和解釋器模式(Interpreter) 468
27.1 迭代器模式(Iterator) 468
27.2 原型模式(Prototype) 469
27.3 解釋器模式(Interpreter) 471
第28章 抽象工廠模式(Abstract Factory) 472
28.1 抽象工廠模式(Abstract Factory)的定義 472
28.2 抽象工廠模式(Abstract Factory)的實現 473
28.3 可應用抽象工廠模式的場閤 476
參考文獻 477
· · · · · · (
收起)