《Unity 3D游戲客戶端基礎框架》概述


版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/linshuhe1/article/details/75175112
框架概述:
做了那么久的業務開發,也做了一年多的核心戰斗開發,最近想着自己倒騰一套游戲框架,當然暫不涉及核心玩法類型和戰斗框架,核心戰斗的設計要根據具體的游戲類型而定制,這里只是一些通用的基礎系統的框架搭建,其中包括:

UI框架(NGUI + MVC)
消息管理(Advanced CSharp Messenger)
網絡層框架(Socket + Protobuf )
表格數據(Protobuf)
資源管理(Unity 5.x 的 AssetBundle 方案)
熱更框架(tolua)
這里使用的引擎版本是:Unity 5.5.0f3

UI框架:
使用 Unity 5.x 進行游戲開發的朋友,估計大都想過用系統自帶的 UGUI 來搭建UI框架,這並沒有什么不好的,只是對於引擎升級並不友好,假如Unity升級對 UGUI 做了比較大的修改,那么對一個成型的項目進行引擎的升級,修改成本是不可估量的,所以這里我還是選用 NGUI 作為搭建UI框架的工具,除了結合 MVC 架構還要考慮后期接入熱更新。

消息管理:
這里我們使用 Advanced CSharp Messenger 這種C#事件實現的消息管理器,特點就是可以將游戲對象作為參數發送。而且,這個先進的c#版本的消息傳遞系統會自動清理事件表在一個新的水平加載,這將防止程序員意外調用銷毀方法,從而有助於防止許多 MissingReferenceExceptions。這個消息傳遞系統是基於桿海德 CSharpMessenger 和馬格努斯Wolffelt CSharpMessenger擴展。

《Unity 3D游戲客戶端基礎框架》消息系統

網絡層框架:
隨着移動網絡的升級,在4G網絡早已普及的今天,除了單機游戲,現在絕大多數的網游都是以強聯網的方式實現的,選用 Socket 通信可以實時地更新玩家狀態,選定了聯網方式之后,還需要考慮網絡協議定制的問題,Protobuf 無疑也是個比較好的選擇,一方面是跨平台特性好,另一方面是數據量小可以節省通信成本。

《Unity 3D游戲客戶端基礎框架》多線程異步 Socket 框架構建
《Unity 3D游戲客戶端基礎框架》 protobuf網絡框架

表格數據:
在游戲開發中,有很多數據是不需要通過網絡層從服務器拉取下來的,而是通過表格配置的格式存儲在本地,例如:游戲中的一個道具,通常服務器之下發該道具的 Id (唯一標識)和 lv(等級),然后客戶端從本地數據中檢索到該道具的具體屬性值。通常使用 Excel 表格來配置數據,但我們一般不會直接將 .xlsx 格式的表格原文件打包到游戲應用包中,通常會通過工具序列化為二進制文件的格式,讀取數據的時候再進行反序列化。上面我們提到了使用 Protobuf 定制網絡協議,但是其實 Protobuf 的序列化和反序列化特性可以滿足我們對於表格數據轉化的需求。

《Unity 3D游戲客戶端基礎框架》protobuf 導excel表格數據

資源管理:
對於資源的管理,其實是為了給后面接入熱更新提供可能,Unity制作游戲的資源管理方式就通過 AssetBundle 工具將資源打成多個 ab 包,對於可熱更新的資源進行熱更的時候,並非單文件的熱更,而是通過網絡下載新的 ab 包來替換本地舊的包,從而實現熱更的目的。

熱更新框架:
通常使用C#來進行Unity的開發,但純C#腳本只能支持Android系統下的熱更新,而對於iPhone系統則無能為力,所以這里通常需要引入一門腳本語言 lua ,使用C#編寫底層框架,使用lua編寫業務邏輯,這是業內最常見的設計方式,還有一個非常成熟的熱更新框架 tolua (前稱 ulua)。通常可熱更新的有:圖片資源、UI預制和lua腳本,而出於跨平台的考慮,C#腳本是不允許進行熱更的。

小結:
上面只是大致說了一遍整個框架會涉及到的工具和技術點,下面我會對每個點進行逐篇細化,有興趣的可以繼續關注下,當然可以根據這些建議自己自學,那樣也可能會快很多。
————————————————
版權聲明:本文為CSDN博主「河樂不為」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/linshuhe1/article/details/75175112


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM