物品欄(inventory)是遊戲裡玩家用來管理他們所攜帶的物品的,例如那個可以用E鍵開啟的揹包介面。
帶有物品欄的方塊
很多方塊(箱子、工作臺或熔爐等)也有自己的物品欄。所以,如果想在自己開發的模組中開發帶有物品欄的方塊,那麼去了解物品欄背後的機制就是十分重要的啊。
Minecraft物品欄執行機制
顯示層就是展現在我們面前的介面。介面接收滑鼠輸入並處理。這一層只存在於客戶端,在Minecraft中對應的為類稱為GuiContainer。
控制層處理邏輯和資料同步的控制層,這一層向GuiContainer提供需要用到的資料,接收GuiContainer傳遞過來的操作,並保證服務端的資料和客戶端的一致。控制層服務端和客戶端都存在,在Minecraft中對應的是類Container。
資料層用於儲存資料,也就是物品資訊。在Minecraf中對應的是Slot類。
示意圖
看完上面的分層機制,有程式設計經驗的同學會聯想到軟體工程領域裡標準的”MVC“模式。
說說圖上圈圈裡的數字是個啥意思:①傳輸的是來自客戶端的Gui事件,比如玩家點選按鈕等,這些事件需要立刻處理,直接傳送至了服務端。
②傳輸的是需要經過客戶端處理的Gui事件,比如玩家拖拽物品槽中的物品等。
③傳輸的是特定物品槽的變動,比如當玩家點選物品槽時,計算物品槽會減少多少物品,並把這一變化傳輸至物品槽。
④傳輸的是Container和其他物品槽的變動,當相應的事件(比如物品被取走)觸發時,資料就會傳輸至Container端以進行相應的操作(如工作臺扣除相應的物品)。
⑤傳輸的是服務端物品的變化和進度條的變化。
⑥傳輸的是玩家對於物品槽的操作,客戶端會將其同步至服務端。
虛線部分用於傳輸控制,Minecraft已經幫我們做好了,所以只剩下了③、④、和⑤,這三種資料的傳輸是需要我們手動執行的。在未來的文章裡,會做進一步解析。
猜你喜歡
- 2021-07-02我們吃到吐的東西,非洲人卻吃不起,印度人也不夠吃
- 2021-06-05我的世界:若mc中加入“槍械”,一槍秒殺末影龍,殭屍看完哭了!
- 2021-05-23「藍芽耳機百科」藍芽耳機有輻射嗎 無線藍芽耳機怎麼用
- 2021-05-19《我的世界》一共有多少種殭屍?這些品種全見過的才是資深玩家!
- 2021-05-16老照片 一戰時期的各國軍隊