相關資料
資料儲存模組
在上面的資料中有詳細介紹,這裡簡單介紹一下資料儲存模組。資料儲存是一個可選模組,開啟後允許地圖開發者使用位於伺服器的資料表進行資料存儲,多用於跨地圖、跨對局同步資料資訊、排行榜等功能。本篇文章將著重於新資料儲存表格用於排行榜功能的情況。
入口
從模組清單載入資料儲存模組,即可開始設定共四種資料表的列資訊:

新表格介紹
就像所有資料表格一樣,每張表格您都需要指定一個」Key「列,也就是表格的主鍵(Primary Key)。 Key列資料必須唯一,是整張表格的索引列,透過對Key的檢索,你可以決定指定的表格的指定資料行。透過圖元對同一個Key的資料行進行多次編輯時,後編輯的資料總是會覆寫前面的資料。
Ranking datasheet
排行榜表是一種特殊的多列表格,您可以自訂若干個列儲存額外信息,例如積分、存活時長、總遊戲時長等,但是排行榜表必須有一列資料(Value列)用來進行正序或倒序排列。
選擇UID as Key,排行榜會將Key列自動轉換為玩家卡:
表格示意
Ranking datasheet1
Rank | Key | Value | Custom Col1 | Custom Col2 | Custom Col… |
---|---|---|---|---|---|
1 | Player1 UUID | 100 | whatever you want to store | ||
2 | Player2 UUID | 90 |
Multi-column Data Table
多列表是一種支援多列資料的表格(區別於先前的資料表只支援一列資料)。您可以在一個Key下儲存多種數據,在圖元腳本中,還提供了編輯排行榜表關聯表的API,在KEY相同時(例如都是玩家UUID),可以透過特定圖元一併編輯排行榜表和多列數據表。
表格示意
Multi-column Data Table1
Key | Value | Custom Col1 | Custom Col2 | Custom Col… |
---|---|---|---|---|
Player1 UUID | 100 | whatever you want to store | ||
Player2 UUID | 90 |
排行榜功能
啟用功能
若要啟用排行榜功能,您必須在工程中啟用資料儲存模組,並至少建立一張排行榜資料表。
在做好準備之後,在創作者中心的發布地圖介面,對即將發布的地圖進行編輯,即可看到排行榜相關設定:

開啟此功能,您的地圖詳情介面就會出現一個排行榜按鈕,玩家可以在此瀏覽到您編輯的排行榜資訊:


編輯排行榜
在上文發布地圖的排行榜編輯介面,您可且暫時只可選擇一張資料表作為要展示的排行榜資訊。 (儘管您可以在工程中使用多張表格儲存資料)

您可以對排行榜其他內容進行編輯:包括是否在局外顯示排行榜、使用哪些列作為排行榜的樣式,它們的順序是怎麼樣的。
選擇多語言,您可以手動編輯排行榜的標題的多語言資訊:

沒有填入的語言會使用預設的表格列名。
編輯完成後,地圖資訊網頁上會顯示您目前的排行榜示意,多國語言並不會在示意中顯示:
圖元
在適當的時機——例如玩家得分、每局對局結束時——使用圖元,向排行榜資料表儲存資料。
注意必須是排行榜資料表相關的圖元,SheetName參數才會讀取到建立的排行榜資料表。
為了更方便地編輯本篇教學介紹的兩種多列表格,特別加入了Tuple資料類型,它是一種特殊的清單。 Tuple類型支援自動識別指定資料表或排行資料表的value從而形成一個元素為指定資料類型的特殊清單。
tuple圖元會自動讀取所有表格,並將表格的列的資料類型作為清單項目的資料類型:
對於排行資料表,一旦新建了自訂資料列,那麼value實際上會包含N列數據,所以也會形成一個tuple:
所以實際使用時,tuple可能會有嵌套:
tuple圖元不會自動更新表的列名等信息,所以一旦發生更改,需要手動刷新tuple圖元。
程式碼
程式碼範例:
- Write
WriteDBLeaderboardAssociationValue(``"rank"``, ``"test_uid_1"``, {``60``, ``"1:00"``}, ``""``, out var c, out var d)
go
- Read
ReadDBLeaderboardAssociationValue(``"rank"``, ``"test_uid_1"``, out var data, ``""``, out var a, out var b)``var data_normal List<object> = data[``2``] Listvar data_normal List<object> = data[``2``] List<ob
go
相關API列表
- SetTuple
- GetTuple
- WriteDBLeaderboardAssociationValue
- RemoveFromLeaderboardDataStoreByKey
- ReadDBLeaderboardAssociationValue
- WriteToLeaderboardDataStore
- RemoveFromLeaderboardDataStoreByKey
- ReadFromLeaderboardDataStore
特別的,對於函數:ReadDBLeaderboardAssociationValue,它的回傳值是一個tuple:
Result:The type is {rankname_value}Tuple
- {rank, key, 值}
- rank: int
- key: string
- value: tuple
- {value, GameCompletionTime}
對於函數:WriteDBLeaderboardAssociationValue,參數Key和Value:
- Key: It is recommended to convert the player’s UID into a string as the key, so that the player’s callsign can be displayed in craftland
- Value:The type is {rankname} Tuple. After selecting SheetName, double-click Value to quickly add the corresponding block
更多API的參數和說明,請使用:官網Documents說明
本機偵錯
在進行地圖編輯時,無法獲得線上玩家的數據,但是Craftland Studio PC提供了透過本地json來查看調試時儲存的數據的方式。
除錯發生資料儲存後,點選圖中選項,即可跳到本機json資料夾,資料表資訊會以json形式儲存,可以供開發者檢查邏輯是否正確。