Unity主程架構師應該如何學習,需要學習哪些知識點?
最近經(jīng)常有人問我如何開始進階學習Unity主程,不知道怎么開始,在我看來可以列為這樣一個進階體系給大家做做參考 1: 編程語言,數(shù)據(jù)結構與算法 (1) c#的基本語法與常用的機制:權限,繼承,多態(tài), virutal, override委托,協(xié)程,foreach,泛型,Lambda表達式,Attrubute,反射,枚舉,異常處理try/catch,垃圾回收等。了解這些C#的語法與核心機制,有助于你寫出高性能的代碼。 (2)掌握常用的數(shù)據(jù)結構,熟悉每種數(shù)據(jù)結構背后的實現(xiàn)原理與性能細節(jié): List, Hash表,隊列,棧,鏈表,字典,樹,圖等; (3)了解常用的一些算法思想: 分治,動態(tài)規(guī)劃,貪心算法,窮舉,預先計算與查表,搜索,排序等。 2: 熟悉Unity游戲引擎使用的非渲染的核心機制: (1)熟悉開發(fā)環(huán)境與開發(fā)工具: .net, mono,il2cpp,android SDK, android NDK, JDK, visual studio, git,svn等。 (2)熟悉Unity引擎中的各種工具的使用: profiler, stats, frame,debugger, log等; (3)熟悉Unity編輯器擴展機制來定制開發(fā)流程與相關工具:關卡編輯器,地圖編輯器,代碼自動生成等。 (4)熟悉Unity的跨平臺的開發(fā)與調(diào)試:基于編輯器/iOS/Android/win/mac等平臺如何開發(fā)與真機調(diào)試。 (5)熟悉常用的iOS開發(fā)與Android開發(fā)的一些核心概念與機制:Activity,OpenGL thread等。 (6)熟悉Unity的各種資源加載策略的機制與用法: Resources, AssetsBundle,StreammingAssets等。 (7)熟悉基于Unity組織大型游戲項目與分工合作的工作展開:美術,程序,策劃如何同時開發(fā),將相互影響降到最低等。 (8)熟悉Unity的各種配置與相關參數(shù)對游戲與性能的影響:物理引擎的參數(shù),編譯的相關參數(shù),unsafe code的相關參數(shù)等。 (9)熟悉各種游戲常用的算法原理與方案:尋路導航,網(wǎng)絡,http,AOI, ROV動態(tài)避障,定點數(shù)物理引擎,程序生成地圖,行為決策樹,狀態(tài)機,流場尋路等。 (10)熟悉常用的解決方案,框架庫,開源項目: Lua熱更新: xLua, ulua; C# 熱更新: ILRuntime,huatuo/HybirdCLR(wolong) Json文本序列化與反序列化: LitJson庫; 二進制序列化與反序列化: Protobuf; 資源管理: YooAssets等; CSV表格數(shù)據(jù)管理: CSVParser, Flash閃表工具等。 (11)Unity DOTS 開發(fā): ECS, Burst等; (12)操作系統(tǒng)的基本知識:文件讀寫,多線程與同步,虛擬內(nèi)存,垃圾回收算法等; 3: 熟悉一個游戲項目應該如何管理與如何組織; (1)如何基于git等版本管理工具來管理項目; (2)搭建框架,技術選型,技術驗證,讓策劃,程序,美術能協(xié)同工作; a:目錄結構劃分與規(guī)劃,將不同的研發(fā)人員分開(美術,策劃,核心程序,基礎程序); b:引入基礎的庫與相關模塊: 資源管理框架,網(wǎng)絡,protobuf協(xié)議,json等; c:根據(jù)游戲的類型來制作一些開發(fā)中的編輯工具:地圖編輯器,關卡編輯器,技能編輯器等; d:根據(jù)游戲的類型編寫通用的框架:資源管理,網(wǎng)絡管理,協(xié)議管理,聲音管理,配置表管理,事件管理,UI管理等。 e: 熱更新的技術分析與接入: Lua方案,ILRuntime方案,huatuo/HybirdCLR方案等; d: 性能測試與技術驗證: 做好項目的技術驗證與性能驗證; e: 熟悉與服務端進行對接,熟悉網(wǎng)絡游戲的解決方案,知道哪些放客戶端,哪些放服務端。 (3)項目進度管理與任務安排; a:給項目組的開發(fā)人員來合理的分配相關任務; b:追蹤相關進度; c:引入系統(tǒng)測試與全平臺測試,盡快更近問題; d:建立測試case與bug庫記錄,記錄下現(xiàn)在有的bug與解決情況; e:閱讀團隊其它成員的代碼,必要時調(diào)整重構,確保代碼的質(zhì)量; 4: 與團隊成員,客戶,老板溝通需求,深度交流,有效溝通; (1): 能謙虛的聽完其它人的講話與觀點; (2): 記錄好別人觀點的重點與內(nèi)在邏輯,并重新梳理,找確認好需求; (3): 針對問題,提出自己的解決方案與疑慮,深度溝通; (4): 每次溝通完后做好小結,發(fā)到郵箱等待確認,實現(xiàn)完成的一次有效溝通; 5: 熟悉Unity引擎的渲染相關的機制與技能(可以往技術美術的角度轉(zhuǎn)型) (1)可編程渲染管線的核心機制; (2)內(nèi)置渲染管線的核心機制; (3)URP/HDRP渲染管線的核心機制與處理; (4)熟悉常用的一些渲染機制:陰影計算,法線,漫反射光照計算,鏡面反射光照計算, 深度測試等 (5)熟悉Shader開發(fā)與常見的Shader移植修改; (6)熟悉常見的一些主流游戲的Shader算法與處理技巧; 6: 關注最新的技術前沿動態(tài); (1)Unity引擎的技術動態(tài)與發(fā)展方向; (2)其它引擎的技術動態(tài)與發(fā)展方向; (3)關注虛擬現(xiàn)實,VR, AR,元宇宙等相關技術動態(tài); (4)關注深度學習AI訓練等與游戲,計算機3D相關的交叉領域; … 在完成以上的學習過程中,看一些第三方的博客也是蠻有用的手段,在這里推薦一位?Unity干貨博主Blake : 【Unity進階篇】 https://www.bycwedu.com/promotion_channels/701553161 https://www.bycwedu.com/promotion_channels/1798575690 不管是對剛?cè)腴T的小白或者需要提升的各位來說他的官網(wǎng)都是干貨滿滿的。 學完了這些,要怎么發(fā)展你就應該有數(shù)了。 這里還給大家收集了一些Unity游戲開發(fā)的源碼,可以參考學習。有興趣的可以下載: Unity游戲開發(fā)項目源碼案例 【https://www.bycwedu.com/customize/640248570】 既然自己選擇了Unity,那就不管別人怎么說,堅持深入學習下去。 做一個長期主義者,保持興趣,持續(xù)學習!