前言
對于佇列和資料鎖,本文結合我所在的mmo游戲專案,討論一個實際例子
當玩家在游戲的程序中,獲得道具、物品時,會彈出一個提示表單(浮動樣式),提示玩家進行操作,




彈出框彈出順序:
先進先出,且不會包含重復資料,
或者是后進先出,且不會包含重復資料
理論上來說同一個時間串列中保存的資料不會超過100項,甚至可以說不會超過50項,那么對串列的操作就不會很耗時,
我的思路

每次背包更新,或者其它有需要提示的操作都保存到串列中,在控制器管理什么時候應該顯示那一項,
在定時器中每300ms或每秒檢查資料,一般有以下幾種條件
只在主城顯示,在戰斗場景不顯示
如果串列有資料,且當前沒有正在顯示的就顯示
在界面關閉之前處理按鈕的回呼,比如從串列中移除元素,
處理例外情況,比如串列數量為0,但界面還顯示的話,就需要把界面關閉,
背包類道具彈窗
裝備彈出條件:
- 玩家等級大于裝備等級
- 新獲得的裝備比當前穿戴的戰力更高
當然有一個極限情況:在裝備點了穿戴的程序中,又獲得了一個新的戰力一樣的裝備,
解決辦法是:先保存當前正在穿戴的裝備資料,待服務器資料回傳穿戴成功才從串列中移除,
其它系統變強類彈窗
有些道具并不會放進背包的,或者一些系統的操作,并不是道具來的,但達到條件之后,也要提醒玩家可操作,
比如寵物可以進行升級,或者強化,彈出一個框提示玩家可操作,
添加一個type欄位,和幾個外觀欄位,用于顯示不同的樣式,
合并同型別道具數量
對于寶箱類道具,希望可以合并相同id的道具為同一個,不會重復彈出多次,僅僅是同一個道具在堆疊數量上增加,
在切換場景時,可以做這個操作,
清除失效道具
對于裝備類或寶石等,有可能玩家手動操作,比如手動穿戴,手動合成掉了,或者時效性道具已經過期了,那么需要從串列中移除背包內不存在的道具,
可以在回到主界面時,進行一次清理串列,
排序
一般來說是按鈕后進先出,或者先進先出的順序
也可以對某些特定種類的進行排序
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/6739.html
標籤:其他
上一篇:UGUI Manual
