前言
在開發游戲的時候,我們肯定會處理道具,不論是多大的游戲都有道具,道具的管理方式也是多種多樣,下面記錄一下我個人在游戲開發中的道具管理方式,
道具的定義
道具的屬性基本分為:
ID、型別、數量、圖示、名稱、等重要資訊,還有描述、激活狀態、購買此道具的消耗道具等其他資訊,
不過在配置和傳遞資料時最重要的屬性還是ID,型別和數量這3個,
-
ID:也就是道具的唯一標識
-
型別:用于區分道具所在的資料表
-
道具的數量: 可以是擁有的數量,也可以是需要的數量,
不論在配置資料的時候還是在傳遞資料的時候,都需要填寫這三個資訊,如果直接使用[id,type,num]的形式傳遞和配置資料也是沒有問題的,不過我更喜歡將ID和型別合并,這樣在傳遞和配置資料的時候只需要設定兩個數值就可以 了,例如[ID,num],
而ID中是帶有型別資訊的,比如10001,可以用前兩位代表型別,可以標識99-10 + 1 個型別,后邊的三位標識道具的ID,可以標識999個道具,如果不夠用自己在擴大位數即可,那么我們在配置資料的時候就可以這樣填寫,

這里的62代表一種型別的道具,10002是我定義的視頻廣告,

也就是說62002這個道具是需要用廣告開啟后才可以使用,所以道具才有激活狀態這個屬性,這個可以有也可以沒有的東西,還是根據自己的專案而定了,
道具管理
以上是定義一個道具的資料格式、配置和使用方式,那么這么多道具應該如何管理呢?
. 各模塊管理器 :
負責管理自己的道具,比如增刪改查,統一實作一個介面,
. 全域道具管理器:
負責統籌管理,可以有兩種方式
- 比如一個活動模塊,可能發放各種型別的道具,這些道具屬于不同的模塊,這個時候全域道具管理器就會通過型別找到模塊管理器處理相關邏輯,也就是為什么各模塊管理器要實作一個同一的介面的原因了,各模塊之間也可以通過這個全域道具管理器進行互動,
- 這個全域道具管理器也可以不呼叫各模塊,而是直接呼叫存檔資料,然后讓各模塊自己監聽資料的變化做對應的處理,
建議
建議只有一個,就是不要把不同型別的資料放到一個資料表中,因為大家都知道的,道具都是有些共同屬性的,那索性把武將,武器,等等一些列有相同屬性的道具都放到一個表中吧!這樣做有幾個問題:
- 將同一種型別的東西放到兩個表中維護,增加了維護難度,
- 將不同型別的資料放到一個表中,如果我需要配置武器資料,還要先向下拉一百或者幾十行略過武將的資料,這也是在增加維護難度,
- 程式在組織模型的時候需要從兩個配置資料中獲取,增加了復雜度,
- 由于將各模塊用的資料都放到了一起,那么只能是作為共有資料一起加進記憶體,而且不能洗掉,
所以還是建議同種型別的資料就放到一個表中維護就可以了,
結語
以上是我個人對于道具管理的一些理解,主要還是對于多人開發而語言,希望有不同意見的同學在下方留言,一起交流,
長按下方二維碼,關注《微笑游戲》公眾號,獲取更多精彩內容,

歡迎掃碼關注公眾號《微笑游戲》,瀏覽更多內容,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/31130.html
標籤:其他
上一篇:發布WebGL的程序
