天天看點

GameFramework篇:StarForce全解讀(總目錄)

說實話,我剛開始看這個官方案例的時候,其實心裡是沒底的,因為子產品和封裝着實有點誇張(别誤會,是我層次低的原因,并不是說這樣不好)。好了,說這些是想告訴大家,不要慌,我一個菜雞都能挺過來你們也可以,并且,在看項目的過程中,你對C#這門語言的掌握應該會更上一層樓,因為用到了相對進階的文法(對我來說泛型限制都是進階的~)。這篇部落格是總目錄,分子產品講解StarForce案例,因為本身StarForce就是分子產品比較明确,是以這種形式的解讀并不算太困難,每個标題後面的連結即為對此子產品功能應用的講解。最後,如果大家又對GF的心得希望可以分享出來,大家共同進步,中國遊戲的明天靠我們了!

我還寫了GF的其他教程,在我部落格分類選擇GameFramework就可以看到了

好了,不說題外話了,我們正式開始。

進入GameFramework場景,這個場景是作為StarForce的入口場景,其核心是

GameFramework篇:StarForce全解讀(總目錄)

這個預制體包含了GF所有子產品

點開Builtin,裡面這些都是功能子產品,一一對應了官網文檔說明http://gameframework.cn/summary

GameFramework篇:StarForce全解讀(總目錄)

1.資源 

  1. 打包須知
  2. StarForce資源加載細節講解(一:資源加載輔助器)
  3. StarForce資源加載細節講解(二:ResourceComponent詳解)
  4. StarForce資源加載細節講解(三:擷取使用資源與總結)
  5. GameFramework篇:StarForce資源熱更新講解(一:基本流程)
  6. GameFramework篇:StarForce資源熱更新講解(二:具體操作步驟)
  • 資源 (Resource) – 為了保證玩家的體驗,我們不推薦再使用同步的方式加載資源,由于 Game Framework 自身使用了一套完整的異步加載資源體系,是以隻提供了異步加載資源的接口。不論簡單的資料表、本地化字典,還是複雜的實體、場景、界面,我們都将使用異步加載。同時,Game Framework 提供了預設的記憶體管理政策(當然,你也可以定義自己的記憶體管理政策)。多數情況下,在使用 GameObject 的過程中,你甚至可以不需要自行進行 Instantiate 或者是 Destroy 操作。
GameFramework篇:StarForce全解讀(總目錄)

2.流程 

  1. GameFramework篇:StarForce流程講解
  2. GameFramework篇:StarForce資源熱更新講解(一:基本流程)
  • 流程 (Procedure) – 是貫穿遊戲運作時整個生命周期的有限狀态機。通過流程,将不同的遊戲狀态進行解耦将是一個非常好的習慣。對于網絡遊戲,你可能需要如檢查資源流程、更新資源流程、檢查伺服器清單流程、選擇伺服器流程、登入伺服器流程、建立角色流程等流程,而對于單機遊戲,你可能需要在遊戲選擇菜單流程和遊戲實際玩法流程之間做切換。如果想增加流程,隻要派生自 ProcedureBase 類并實作自己的流程類即可使用。

我們先不看别的,先看它是怎麼進入遊戲的

GameFramework篇:StarForce全解讀(總目錄)
  • 個人了解:最底下那個Entrance Procedure(入口流程),即為遊戲開始的腳本。其餘勾選的即為遊戲裡用得到的流程。其實流程沒什麼神秘的,他就像個狀态機,遊戲裡的任一時刻隻有一個狀态,比如你打開背包,就離開目前的大廳,進入背包流程,當你點選傳回大廳按鈕,就離開背包流程,進入大廳流程。切換場景也是如此。

3.實體

  1. GameFramework篇:StarForce顯示實體(Entity)
  • 實體 (Entity) – 我們将遊戲場景中,動态建立的一切物體定義為實體。此子產品提供管理實體和實體組的功能,如顯示隐藏實體、挂接實體(如挂接武器、坐騎,或者抓起另一個實體)等。實體使用結束後可以不立刻銷毀,進而等待下一次重新使用。
  • 個人了解:看完了流程,我們就要看遊戲物體了,在GF裡,所有的遊戲物體都被當做實體,并且,采用實體(Entity)與實體邏輯屬性(EntityLogic)分離的做法,舉個例子,實體就是一個大腦空白的人,他不會動,沒有呼吸,沒有心跳,沒有思想,我們想讓他“活過來”,就要賦予他邏輯思維,給他名字。同樣的,在GF裡,實體邏輯是創造實體的時候動态添加的。你看這個飛機,他隻有一個模型和一點貼圖,一個碰撞器而已,把他放到遊戲裡,它不會動,不會發出聲音,就是個死物。
    GameFramework篇:StarForce全解讀(總目錄)
    看代碼裡的Entity部分,符合我們的論述。
    GameFramework篇:StarForce全解讀(總目錄)

4.UI

  1. GameFramework篇:StarForce加載UI講解(上)
  2. GameFramework篇:StarForce加載UI講解(下)
  • 界面 (UI) – 提供管理界面和界面組的功能,如顯示隐藏界面、激活界面、改變界面層級等。不論是 Unity 内置的 uGUI 還是其它類型的 UI 插件(如 NGUI),隻要派生自 UIFormLogic 類并實作自己的界面類即可使用。界面使用結束後可以不立刻銷毀,進而等待下一次重新使用。
  • 個人了解:遊戲流程有了,遊戲物體也有了,為了讓玩家和遊戲更好的互動,我們還需要看UI。在GF裡,所有的UI界面,都要放到Instance下面。當然了,人物的血條,藍條這種就需要自己斟酌放哪了,案例的做法是建立了自定義元件,将血條與UI分離開來。
GameFramework篇:StarForce全解讀(總目錄)

5.對象池//TODO

  • 對象池 (Object Pool) – 提供對象緩存池的功能,避免頻繁地建立和銷毀各種遊戲對象,提高遊戲性能。除了 Game Framework 自身使用了對象池,使用者還可以很友善地建立和管理自己的對象池。
  • 個人了解:這也算是一個老生常談的話題了,GF架構已經内置了這個功能,在創造實體的時候都是看對象池有沒有,沒有的話就建立一個,有的話就直接拿來用了,節省了不少性能。

6.配置//TODO

  • 全局配置 (Config) – 存儲一些全局的隻讀的遊戲配置,如玩家初始速度、遊戲初始音量等。
  • 個人了解:不同于遊戲中多變的資料,Config适用的情況是幾乎不怎麼變化的資料配置,版本号,遊戲音量等,

7.資料結點

  • 資料結點 (Data Node) – 将任意類型的資料以樹狀結構的形式進行儲存,用于管理遊戲運作時的各種資料。
  • 個人了解:這個就是适用于遊戲運作時的資料子產品啦,比如玩家的血量,藍量,經驗值等。

8.資料表

  1. GameFramework篇:StarForce資料表建立與讀取
  2. GameFramework篇:類自動生成工具的使用
  • 資料表 (Data Table) – 可以将遊戲資料以表格(如 Microsoft Excel)的形式進行配置後,使用此子產品使用這些資料表。資料表的格式是可以自定義的。
  • 個人了解:這個用于初始化實體的資料,初始生命值,攻擊力,防禦力等。往往在初始化資源的時候使用。

9.調試器

  1. GameFramework篇:Debugger相關
  • 調試器 (Debugger) – 當遊戲在 Unity 編輯器中運作或者以 Development 方式釋出運作時,将出現調試器視窗,便于檢視運作時日志、調試資訊等。使用者還可以友善地将自己的功能注冊到調試器視窗上并使用。
  • 個人了解:Debugger,不必多說。

10.下載下傳器

  1. GameFramework篇:StarForce資源熱更新講解(一:基本流程)
  2. GameFramework篇:StarForce資源熱更新講解(二:具體操作步驟)
  • 下載下傳 (Download) – 提供下載下傳檔案的功能,支援斷點續傳,并可指定允許幾個下載下傳器進行同時下載下傳。更新資源時會主動調用此子產品。
  • 個人了解:Ellan封裝好的下載下傳子產品,也可根據自己需求更改

11.事件

  1. GameFramework篇:自定義事件訂閱
  • 事件 (Event) – 遊戲邏輯監聽、抛出事件的機制。Game Framework 中的很多子產品在完成操作後都會抛出内置事件,監聽這些事件将大大解除遊戲邏輯之間的耦合。使用者也可以定義自己的遊戲邏輯事件。
  • 個人了解:這個子產品真的很重要,類與類通信十分友善,比如,訂閱UI打開成功事件,當打開成功的時候就切換流程。再比如,訂閱玩家重生事件,當玩家重生時清空螢幕上的怪。。。

12.有限狀态機

  1. GameFramework篇:StarForce流程講解
  • 有限狀态機 (FSM) – 提供建立、使用和銷毀有限狀态機的功能,一些适用于有限狀态機機制的遊戲邏輯,使用此子產品将是一個不錯的選擇。
  • 個人了解:這個子產品也很厲害,架構裡的流程子產品就是基于有限狀态機實作的。至于其應用便更加廣泛,玩家從靜止到移動,從平A到技能,從正常到突然去世,拳皇這種格鬥遊戲的搓招系統。。。總之狀态的改變,都可以用。

13.本地化//TODO

  • 本地化 (Localization) – 提供本地化功能,也就是我們平時所說的多語言。Game Framework 在本地化方面,不但支援文本的本地化,還支援任意資源的本地化,比如遊戲中釋放煙花特效也可以做出幾個多國語言的版本,使得中文版裡是“新年好”字樣的特效,而英文版裡是“Happy New Year”字樣的特效。
  • 個人了解:呃。。。也叫變體吧,多語言用得到。

14.網絡

  • GameFramework篇:Network子產品案例解讀(一:準備工作)
  • GameFramework篇:Network子產品案例解讀(二:GF Network子產品了解)
  • 網絡 (Network) – 提供使用 Socket 長連接配接的功能,目前我們支援 TCP 協定,同時相容 IPv4 和 IPv6 兩個版本。使用者可以同時建立多個連接配接與多個伺服器同時進行通信,比如除了連接配接正常的遊戲伺服器,還可以連接配接語音聊天伺服器。如果想接入 ProtoBuf 之類的協定庫,隻要派生自 Packet 類并實作自己的消息包類即可使用。
  • 個人了解://TODO

15.場景//TODO

  • 場景 (Scene) – 提供場景管理的功能,可以同時加載多個場景,也可以随時解除安裝任何一個場景,進而很容易地實作場景的分部加載。
  • 個人了解:封裝了UnityScene,實作了更多的功能,與其餘子產品配合起來,舒服的很。

16.遊戲配置

  1. GameFramework篇:存檔功能簡單使用
  • 遊戲配置 (Setting) – 以鍵值對的形式存儲玩家資料,對 UnityEngine.PlayerPrefs 進行封裝。
  • 個人了解:存讀檔功能

17.Web請求

  1. GameFramework篇:StarForce資源熱更新講解(一:基本流程)
  • Web 請求 (Web Request) – 提供使用短連接配接的功能,可以用 Get 或者 Post 方法向伺服器發送請求并擷取響應資料,可指定允許幾個 Web 請求器進行同時請求。
  • 個人了解://TODO

18.聲音//TODO

  • 聲音 (Sound) – 提供管理聲音和聲音組的功能,使用者可以自定義一個聲音的音量、是 2D 聲音還是 3D 聲音,甚至是直接綁定到某個實體上跟随實體移動。
  • 個人了解:聲音管理子產品,集中管理遊戲所有音效,很友善。

19.引用池//TODO

繼續閱讀