Application Loop
概述
Fusion Application Loop展示了如何結構化一個遊戲的外迴圈,以適當地與Fusion協同工作,來載入場景,及設定與卸除連結,和提供基本的配對功能。
進一步而言,這個範例允許玩家以一些模擬屬性,例如遊戲模式及地圖名稱,來建立或加入遊戲階段。它向加入的使用者展示一個遊戲階段清單,並允許他們在載入遊戲場景之前設定他們的虛擬人偶。這個範例也可以同時處理客戶端及主機端離開遊戲階段並且返回入門場景。
在您開始之前
為了運行這個範例,首先先在PhotonEngine儀表板建立一個Fusion應用程式帳號,然後將其貼上到即時設定(可從Fusion選單中進入)中的App Id Fusion
欄位中。之後載入Launch
場景並且按下Play
。
下載
版本 | 發布日期 | 下載 | ||
---|---|---|---|---|
1.1.6 | 2023年4月17日 | Fusion應用程式迴圈1.1.6組建184 |
預製件
- 應用程式預製件:這是主要的應用程式啟動器。這是一個單一的啟動器,而且可以放入任何場景之中來啟動該場景的應用程式(在編輯器中運行時很有用)。它能夠以一些預設值來自動建立一個遊戲階段,當從編輯器運行時可以跳過整個配對過程。
- 角色預製件:玩家虛擬人偶——當各個玩家進入地圖時,這個預製件將為他們生成一個角色虛擬人偶執行個體。該角色將使用到卸載地圖為止。
- 玩家預製件:玩家遊戲階段屬性——當遊戲階段開始時,這個預製件將為各個玩家生成一個玩家執行個體。該玩家執行個體可在載入場景時存活,且將使用到遊戲階段解除連結為止。
場景
0.Launch
——啟動場景只在組建時使用,並且只保留單一的App
的一個執行個體。在組建前設定此執行個體,以確保您不會意外地以一個應用程式的偵錯(自動連結)組態來組建。1.Intro
——在建立連結之前,入門場景包含遊戲前的使用者介面——這是選擇拓撲/客戶端模式及遊戲類型的地方。它也包含選擇希望加入的遊戲階段及建立新的遊戲階段的使用者介面。如果連結解除或關閉,這是應用程式將返回的地方。2.Staging
——一旦網路遊戲階段被建立,而且允許玩家設定他們的虛擬人像並向主機端發出他們準備好進行遊戲的信號之後,將載入暫存場景。當玩家需要設定他們的虛擬人像並表明他們準備好進行遊戲時,應用程式可能會返回此處。X.MapY
場景是實際的遊戲地圖——各個遊戲地圖基於暫存場景的玩家設定,來具現化玩家虛擬人偶,並在所有客戶端完成載入時告訴主機端,這樣就算有些客戶端載入比較慢,所有客戶端能在同一時間開始遊戲。主機端可以移至下一個遊戲場景,所有客戶端可自由地解除連結。GameOver
——遊戲結束場景基本上只是一個地圖,在這裡玩家不會有虛擬人偶。這可以用來顯示對戰結果,或將玩家帶回暫存場景。
行為
在GameUI
、UIComponents
及Utility
資料夾中的代碼並不針對此實例,將不會被進一步討論。
App
在這個實例中主要的進入點。它有方法可以建立或消除一個遊戲階段,也能夠追蹤活躍中的玩家。它執行主要的Fusion回調。Character
玩家在遊戲中的虛擬人偶——控制玩家角色的基本動作。Map
地圖只是一個存在於實際遊戲場景的網路物件,並且負責在該場景中生成玩家的虛擬人偶。MapLoader
這是針對Fusion的物件提供者執行方式,並且從展示載入畫面到收集已載入網路物件的清單時,控制場景載入的序列。Session
當第一位玩家連接之後,將生成一個單一的遊戲階段物件,而且作為App
的上層,這樣它也不會在載入時被消除。遊戲階段將控制載入地圖的邏輯,而且可以透過應用程式 (App.Instance.Session
)進行存取。Player
當各個玩家加入一個遊戲階段時,都將獲得一個玩家物件,而且這也作為遊戲階段遊戲物件的上層,以在載入場景時保持存活。玩家物件沒有遊戲內的視覺代表,它只是玩家資訊的一個封裝,並與所有客戶端共享。