-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Unity 游戲優化(第2版)

( 簡體 字)
作者:[英] 克里斯·迪金森(Chris Dickinson)著 蔡俊鴻 雷鴻飛譯類別:1. -> 多媒體 -> 遊戲引擎 -> Unity
譯者:
出版社:清華大學出版社Unity 游戲優化(第2版) 3dWoo書號: 52795
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:5/1/2020
頁數:268
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787302550518
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

用戶體驗在所有游戲中都是重要的組成部分,它不僅包括游戲的劇情和玩法,也包括運行時畫面的流暢性、與多人服務器連接的可靠性、用戶輸入的響應性,甚至由于移動設備和云下載的流行,它還包括最終程序文件的大小。由于Unity等工具提供了大量有用的開發功能,還允許獨立開發者訪問,游戲開發的門檻已經大大降低了。然而,由于游戲行業的競爭激烈,玩家對游戲最終品質的期望與日俱增,游戲的各方面應該能經得起玩家和評論家的考驗。
性能優化的目標與用戶體驗密不可分。缺乏優化的游戲會導致低幀率、卡頓、崩潰、輸入延遲、過長的加載時間、不一致以及令人不舒服的運行時行為,以及物理引擎的故障甚至過高的電池消耗(移動設備通常被忽略的指標)。只要遭遇上述問題之一,就是游戲開發者的噩夢,因為其他方面都做得很好,評論也只炮轟做得不好的一個方面。
性能優化的目標之一是最大化地利用可用資源,包括CPU資源,如消耗的CPU循環數、使用的主存空間大小(稱為RAM),也包括GPU資源[GPU有自己的內存空間(稱為VRAM)]、填充率、內存帶寬等。然而,性能優化最重要的目標是確保沒有哪個資源不合時宜地導致性能瓶頸,優先級最高的任務得到優先執行。哪怕很小的、間歇性的停頓或性能方面的延遲都會破壞玩家的體驗,打破沉浸感,限制我們嘗試創建體驗的潛力。另一個需要考慮的事項是,節省的資源越多,便能夠在游戲中創造出更多的活動,從而產生更有趣、更生動的玩法。
同樣重要的是,要決定何時后退一步,停止增強性能。在一個擁有無限時間和資源的世界里,總會有另一種方法讓游戲變得更好、更快、更高效。在開發過程中,必須確定產品達到了可接受的質量水平。如果不這樣做,就會重復實現那些很少或沒有實際好處的變更,而每個變更都可能引入更多的bug。
判斷一個性能問題是否值得修復的最佳方法是回答“用戶會注意到它嗎?”。如果這個問題的答案是“不”,那么性能優化就是白費力氣。軟件開發中有句老話:
過早的優化是萬惡之源。
過早優化是在沒有任何必要證據的情況下,為提高性能而重新編寫和重構代碼的主要原因。這可能意味著在沒有顯示存在性能問題的情況下進行更改,或者進行更改的原因是,我們只相信性能問題可能源于某個特定的領域,但沒有證據證明的確存在該問題。
當然,編寫代碼時應該避免更直接、更明顯的性能問題。然而,在項目末尾進行真正的性能優化將花費很多時間,而我們應該做好計劃,以正確地改善項目,同時避免在沒有可驗證的情況下實施更昂貴和耗時的變更。這些錯誤使整個軟件開發團隊付出了代價,沒有成效的工作時間令人沮喪。
《Unity 游戲優化(第2版)》介紹在Unity程序中檢測和修復性能問題所需的工具、知識和技能,不管這些問題源于何處。這些瓶頸可能出現在CPU、GPU和RAM等硬件組件中,也可能出現在物理、渲染和Unity引擎等軟件子系統中。
在每天充斥著高質量新游戲的市場中,優化游戲的性能將使游戲具有更大的成功率,提高了在市場上脫穎而出的機會。
《Unity 游戲優化(第2版)》內容
第1章探索Unity Profiler,研究剖析程序、檢測性能瓶頸以及分析問題根源的一系列方法。
第2章學習Unity項目中C#腳本代碼的最佳實踐,最小化MonoBehaviour回調的開銷,改進對象間的通信等。
第3章探索Unity的動態批處理和靜態批處理系統,了解如何使用它們減輕渲染管線的負擔。
第4章了解藝術資源的底層技術,學習如何通過導入、壓縮和編碼避免常見的陷阱。
第5章研究Unity內部用于3D和2D游戲的物理引擎的細微差別,以及如何正確組織物理對象,以提升性能。
第6章深入探討渲染管線,以及如何提升在GPU或CPU上遭受渲染瓶頸的應用程序,如何優化光照、陰影、粒子特效等圖形效果,如何優化著色器代碼,以及一些用于移動設備的特定技術。
第7章關注VR和AR等新的娛樂媒介,還包括一些針對這些平臺構建的程序所獨有的性能優化技術。
第8章討論檢驗Unity引擎、Mono框架的內部工作情況,以及在這些組件內部如何管理內存,以使程序遠離過高的堆分配和運行時的垃圾回收。
第9章介紹Unity專家用于提升項目工作流和場景管理的大量有用技術。
閱讀《Unity 游戲優化(第2版)》的條件
《Unity 游戲優化(第2版)》主要關注應用到Unity 2017上的特性和增強功能。《Unity 游戲優化(第2版)》討論的很多技術可應用到Unity 5.x或更舊版本的項目中,但這些版本列出的特性可能會有所不同。這些差異會在適當的地方突出顯示。
《Unity 游戲優化(第2版)》讀者對象
《Unity 游戲優化(第2版)》面向對Unity的大多數特性富有經驗的中高級Unity開發者,以及希望最大化游戲性能或解決特定瓶頸的開發人員。導致瓶頸的原因不管是持續的CPU負載、運行時CPU峰值、緩慢的內存訪問、內存碎片、垃圾回收、糟糕的GPU填充率,還是內存帶寬,《Unity 游戲優化(第2版)》都提供了識別問題根源所需的技術,并探索在程序中減少其影響的多種方式。
腳本和內存使用部分要求讀者熟悉C#語言,著色器優化部分要求讀者具有Cg基礎。
約定
代碼塊的格式設置如下:
void Start() {
GameLogic.Instance.RegisterUpdateableObject(this);
Initialize();
}

protected virtual void Initialize() {
// derived classes should override this method for initialization code,
and NOT reimplement Start()
}
注意:
警告或重要提示出現在這樣的方框中。

提示:
提示和技巧出現在這樣的方框中。
內容簡介:

● 使用Unity?Profiler查找程序中任何地方的瓶頸,并發現解決它們的方法。
● 實現C#腳本編寫的最佳實踐,避免常見誤區。
● 深入理解渲染管線,通過減少繪制調用和避免填充率瓶頸來最大化渲染管線的性能。
● 以大多數開發者都能理解的方式增強著色器,通過微妙而有效的性能調整優化它們。
● 充分利用物理引擎使場景盡可能保持動態。
● 組織、過濾并壓縮藝術資源,保持高品質的同時最大化性能。
● 發現VR項目中各種嚴重的性能問題,找到解決它們的方法。
● 使用Mono框架和C#實現底層強化以最大化內存使用,避免垃圾回收。
● 了解項目組織的最佳實踐,通過改進工作流來節省時間。
目錄:

第1章研究性能問題1
1.1UnityProfiler2
1.1.1啟動Profiler3
1.1.2Profiler窗口7
1.2性能分析的最佳方法15
1.2.1驗證腳本是否出現16
1.2.2驗證腳本次數16
1.2.3驗證事件的順序17
1.2.4最小化正在進行的代碼更改18
1.2.5最小化內部影響18
1.2.6最小化外部影響20
1.2.7代碼片段的針對性分析20
1.3關于分析的思考25
1.3.1理解Profiler工具26
1.3.2減少干擾26
1.3.3關注問題27
1.4本章小結27
第2章腳本策略29
2.1使用最快的方法獲取組件29
2.2移除空的回調定義31
2.3緩存組件引用34
2.4共享計算輸出36
2.5Update、Coroutines和InvokeRepeating36
2.6更快的GameObject空引用檢查40
2.7避免從GameObject取出字符串屬性40
2.8使用合適的數據結構43
2.9避免運行時修改Transform的父節點44
2.10注意緩存Transform的變化44
2.11避免在運行時使用Find()和SendMessage()方法46
2.11.1將引用分配給預先存在的對象49
2.11.2靜態類51
2.11.3單例組件54
2.11.4全局消息傳遞系統58
2.12禁用未使用的腳本和對象69
2.12.1通過可見性禁用對象70
2.12.2通過距離禁用對象71
2.13使用距離平方而不是距離72
2.14最小化反序列化行為73
2.14.1減小序列化對象73
2.14.2異步加載序列化對象74
2.14.3在內存中保存之前加載的序列化對象74
2.14.4將公共數據移入ScriptableObject74
2.15疊加、異步地加載場景74
2.16創建自定義的Update()層76
2.17本章小結80
第3章批處理的優勢81
3.1DrawCall82
3.2材質和著色器84
3.3FrameDebugger86
3.4動態批處理88
3.4.1頂點屬性89
3.4.2網格縮放91
3.4.3動態批處理總結92
3.5靜態批處理93
3.5.1Static標記93
3.5.2內存需求93
3.5.3材質引用94
3.5.4靜態批處理的警告94
3.5.5靜態批處理總結95
3.6本章小結96
第4章著手處理藝術資源97
4.1音頻97
4.1.1導入音頻文件98
4.1.2加載音頻文件98
4.1.3編碼格式與品質級別101
4.1.4音頻性能增強103
4.2紋理文件106
4.2.1紋理壓縮格式106
4.2.2紋理性能增強108
4.3網格和動畫文件116
4.3.1減少多邊形數量117
4.3.2調整網格壓縮117
4.3.3恰當使用Read-WriteEnabled118
4.3.4考慮烘焙動畫118
4.3.5合并網格119
4.4AssetBundle和Resource119
4.5本章小結120
第5章加速物理121
5.1物理引擎的內部工作情況122
5.1.1物理和時間122
5.1.2靜態碰撞器和動態碰撞器125
5.1.3碰撞檢測126
5.1.4碰撞器類型127
5.1.5碰撞矩陣129
5.1.6Rigidbody激活和休眠狀態129
5.1.7射線和對象投射130
5.1.8調試物理130
5.2物理性能優化132
5.2.1場景設置132
5.2.2適當使用靜態碰撞器134
5.2.3恰當使用觸發體積134
5.2.4優化碰撞矩陣135
5.2.5首選離散碰撞檢測136
5.2.6修改固定更新頻率137
5.2.7調整允許的最大時間步長138
5.2.8最小化射線發射和邊界體積檢查139
5.2.9避免復雜的網格碰撞器140
5.2.10避免復雜的物理組件142
5.2.11使物理對象休眠143
5.2.12修改處理器迭代次數144
5.2.13優化布娃娃145
5.2.14確定何時使用物理147
5.3本章小結148
第6章動態圖形149
6.1管線渲染150
6.1.1GPU前端151
6.1.2GPU后端152
6.1.3光照和陰影155
6.1.4多線程渲染159
6.1.5低級渲染API159
6.2性能檢測問題160
6.2.1分析渲染問題160
6.2.2暴力測試162
6.3渲染性能的增強163
6.3.1啟用/禁用GPUSkinning163
6.3.2降低幾何復雜度164
6.3.3減少曲面細分164
6.3.4應用GPU實例化164
6.3.5使用基于網格的LOD165
6.3.6使用遮擋剔除167
6.3.7優化粒子系統168
6.3.8優化UnityUI170
6.3.9著色器優化174
6.3.10使用更少的紋理數據181
6.3.11測試不同的GPU紋理壓縮格式181
6.3.12最小化紋理交換182
6.3.13VRAM限制183
6.3.14照明優化184
6.3.15優化移動設備的渲染性能186
6.4本章小結188
第7章虛擬速度和增強加速度189
7.1XR開發190
7.1.1仿真191
7.1.2用戶舒適度192
7.2性能增強194
7.2.1物盡其用194
7.2.2單通道立體渲染和多通道立體渲染195
7.2.3應用抗鋸齒196
7.2.4首選前向渲染197
7.2.5VR的圖像效果197
7.2.6背面剔除197
7.2.7空間化音頻198
7.2.8避免攝像機物理碰撞198
7.2.9避免歐拉角198
7.2.10運動約束199
7.2.11跟上最新發展199
7.3本章小結199
第8章掌握內存管理201
8.1Mono平臺202
8.2代碼編譯209
8.3分析內存210
8.3.1分析內存消耗210
8.3.2分析內存效率211
8.4內存管理性能增強212
8.4.1垃圾回收策略212
8.4.2手動JIT編譯213
8.4.3值類型和引用類型214
8.4.4字符串連接221
8.4.5裝箱(Boxing)224
8.4.6數據布局的重要性226
8.4.7UnityAPI中的數組227
8.4.8對字典鍵使用InstanceID227
8.4.9foreach循環228
8.4.10協程229
8.4.11閉包229
8.4.12.NET庫函數230
8.4.13臨時工作緩沖區231
8.4.14對象池231
8.4.15預制池234
8.4.16IL2CPP優化249
8.4.17WebGL優化249
8.5Unity、Mono和IL2CPP的未來249
8.6本章小結252
第9章提示與技巧253
9.1編輯器熱鍵提示254
9.1.1GameObject254
9.1.2Scene窗口254
9.1.3數組255
9.1.4界面255
9.1.5在編輯器內撰寫文檔256
9.2編輯器UI提示256
9.2.1腳本執行順序256
9.2.2編輯器文件256
9.2.3Inspector窗口258
9.2.4Project窗口259
9.2.5Hierarchy窗口260
9.2.6Scene和Game窗口260
9.2.7Play模式262
9.3腳本提示262
9.3.1一般情況262
9.3.2特性263
9.3.3日志264
9.3.4有用的鏈接264
9.4自定義編輯器腳本和菜單提示265
9.5外部提示266
9.6本章小結268
序: