unity客戶端基本框架(轉載)

框架概述:

基礎系統的框架搭建,其中包括:程序員

  • UI框架(NGUI + MVC
  • 消息管理(Advanced CSharp Messenger
  • 網絡層框架(Socket + Protobuf )
  • 表格數據(Protobuf
  • 資源管理(Unity 5.x 的 AssetBundle 方案)
  • 熱更框架(tolua

UI框架:

使用 Unity 5.x 進行遊戲開發的朋友,估計大都想過用系統自帶的 UGUI 來搭建UI框架,這並無什麼很差的,只是對於引擎升級並不友好,假如Unity升級對 UGUI 作了比較大的修改,那麼對一個成型的項目進行引擎的升級,修改爲本是不可估量的,因此這裏我仍是選用 NGUI 做爲搭建UI框架的工具,除告終合 MVC 架構還要考慮後期接入熱更新。c#

消息管理:

這裏咱們使用 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#腳本是不容許進行熱更的。ui


小結:

上面只是大體說了一遍整個框架會涉及到的工具和技術點,下面我會對每一個點進行逐篇細化,有興趣的能夠繼續關注下,固然能夠根據這些建議本身自學,那樣也可能會快不少。

轉載地址:http://blog.csdn.net/linshuhe1/article/details/75175112

相關文章
相關標籤/搜索