bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

客戶端是什么意思(pc客戶端1和2是什么意思啊)

我大多數時候向來不喜歡直接用別人的代碼,本著能自己寫就自己寫的原則,客戶端結構也一直都是我自己在維護.

創新互聯公司是創新、創意、研發型一體的綜合型網站建設公司,自成立以來公司不斷探索創新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十年時間我們累計服務了上千家以及全國政企客戶,如成都地磅秤等企業單位,完善的項目管理流程,嚴格把控項目進度與質量監控加上過硬的技術實力獲得客戶的一致贊譽。

代碼結構

整個客戶端大體上是分為Frame和Game兩大部分.Frame為框架層,通用于所有項目.Game是游戲層,只能寫當前項目才會用到的代碼.

Frame:說是通用于所有項目有點夸大了,畢竟游戲類型太多了,商業游戲引擎都不敢說通用于所有游戲,但這確實是這部分設計的初衷.其實這部分就是沉淀下來的代碼,就算是重新做一個新的項目,這部分代碼也仍然可以直接使用.

Camera:再次對unity的Camera封裝一層.提供封裝所有的攝像機相關的常用操作.

Character:封裝角色,游戲中所有的看起來像個人,或者能夠當作一個人的都是角色.

ClassPool:對象池,適用于所有類對象,就是需要申請時先從未使用的對象列表時查找,有可以重復使用的就返回出去,沒有的就創建一個.

CommandSystem:命令系統.

特點:

1.封裝邏輯

2.連接邏輯與界面,以及項目中任何模塊

3.延遲執行

4.線程安全,在子線程中可以使用延遲命令將邏輯放到主線程執行

5.日志打印

基于以上特點,命令系統一般是用在表示一件邏輯意義上的事件,命令中可訪問任意項目代碼,所以當一個事件關聯多個模塊時,應該將相關代碼封裝到一個命令中

比如數據改變時,即有數據存儲的改變,也有界面相應的改變,那就需要將該邏輯封裝到命令中,在合適的地方調用命令即可.調用方只需要關心觸發了什么事件,而不需要關心事件具體內容.

命令系統的最原始靈感來自于天龍八部代碼中的命令,天龍八部中的命令只是一個結構體,加上一堆無具體類型的參數,然后發送的時候指定那個參數是什么意思,用的時候再強轉類型.

但是我設計的命令系統核心是邏輯即對象.由此衍生出一些其他的特性.延遲執行,線程安全等等.

Common:大多不知道怎么歸類的以及公共使用的部分都放在這里了,比如工具函數,全局定義,枚舉定義,等等.

Component:組件,思想倒是來自于unity,不過我也就一開始用了一個月的unity,就知道個組合代替繼承這個說法.然后再次使用unity已經是2年后了.這里的組件核心思想是所有可以從類的核心中拆分出來需要單獨更新的內容都可以寫成一個組件.所以這里組件強調的是邏輯更新.并不是把所有的東西都放到組件里面.相當于組合與繼承的結合.

DataBase:數據庫相關,比如MySQL,SQLite,以及自己寫過的數據表格.

DynamicAttackScript:代碼中動態附加到GameObject上的腳本,其實這里 一般都是一些需要在面板上顯示調試信息的腳本.

Effect:粒子特效的封裝,提供一些特效的常用操作.

GameFramework:核心管理器.以及一些其他獨立的系統.

GamePlugin:主要是提供調用外部插件的接口.另外一個項目寫的插件,然后放到項目的指定目錄里,就會自動調用.

GameScene:游戲邏輯場景.

游戲總體劃分為多個邏輯場景,分別代表游戲不同的階段,一般由所使用的資源和邏輯共同決定邏輯場景劃分.

一個邏輯場景包含若干個流程,流程以樹形結構存儲.邏輯場景至少包含一個起始流程和退出流程.

流程表示邏輯場景內部的狀態劃分,流程的切換一般都會有界面的相應切換.

進入流程時的操作一般與退出流程時的操作對應,比如進入流程時打開了一個界面,那退出流程時就應該將此界面關閉.進入流程時禁用了某項操作,退出流程時就應該重新啟用此操作.

流程之間不允許互相訪問,流程之間應該是相對隔離的,僅允許在進入或者退出流程時判斷上一個流程或者下一個流程的類型來執行不同的邏輯.

流程切換時僅會停止對舊流程的更新,啟用新流程的更新,不會銷毀任何流程.

邏輯場景切換時會銷毀舊邏輯場景以及此場景的所有流程,加載并初始化新邏輯場景.

一個邏輯場景一般會使用若干個資源場景,并且根據流程切換資源場景顯示.

其實主要作用就是區分不同游戲狀態,邏輯隔離,不同邏輯之間盡量不會有耦合.

LayoutSystem:前身是C 寫的UI框架,C 從opengl開始,封裝UI,隱藏底層具體實現,只需要上層關心游戲界面邏輯即可.從C 轉到unity后,這部分也只是把底層unity已經實現的部分替換掉,上層基本沒多大變化.

MovableObject:字面意思就是可移動物體,也就是游戲中所有需要移動或者具有位置屬性的物體的基類.

ObjectPool:物體池,與ClassPool的區別就是,這個池里存的是GameObject,ClassPool里存的是類對象.

也就是所有從磁盤預設實例化出來的GameObject都會存在這個池里,除非指定了銷毀時是真正銷毀,否則都是默認回收存起來.

ResouceManager:資源管理器,統一了從AssetBundle和Resources加載的方式,使上層只需要知道加載了某個資源,而不需要具體關心需要從哪兒加載,從哪兒加載是一開始讀取配置文件就已經決定了的.一般情況下編輯器開發環境下從Resources加載,打包后從AssetBundle加載.也可以在編輯器開發環境下測試從AssetBundle加載.

Socket:網絡部分.自定義的通信協議.雖然現在有很多成熟的商業序列化庫用來進行網絡通信,但是我還是從我自己實際情況觸發,寫一套自己的序列化通信協議.畢竟也不難,寫出來效率也不低,優化也可以由自己完全掌握.

以上就是Frame部分的架構介紹,雖然算不上有多好,但是總歸是自己在這些年不斷的摸索中總結出來自己可用的一套結構.從字數上也看得出,其中有兩個比較重要的部分,CommandSystem和GameScene,大部分功能都需要依賴這兩個系統來實現.還有一個比較重要,Component,這三個部分相輔相成,撐起了大部分的客戶端功能.

文章標題:客戶端是什么意思(pc客戶端1和2是什么意思啊)
本文網址:http://vcdvsql.cn/article22/siocc.html

成都網站建設公司_創新互聯,為您提供網站建設、全網營銷推廣、企業建站企業網站制作、軟件開發、電子商務

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設