SKYXY客服
x
第四章 arcalet教程 - 讀取與寫入排行榜 | skyxy
快速建站
︿
TOP
首頁 > 入門學習 > 文章內容
第四章 arcalet教程 - 讀取與寫入排行榜
7/14/2016
瀏覽數:1591
沈夜
讀取與寫入排行榜
arcalet 除了提供資料的寫入與讀取,也提供了相當多的api供開發者使用。
現今許多遊戲都擁有排行積分榜,供玩家們共同為更高的分數競爭。
arcalet 也有提供排行榜功能並能讓開發者可以自己定義只屬於自己遊戲的選項。
前言:
積分版是用來記錄玩家遊戲分數並產生成績排行榜。

arcalet 提供的積分排行榜分為日排行、周排行、月排行、歷史排行。
1.日排行的成績每日會重置歸零,新的成績寫入後再重新排行。
2.周排行、月排行則分別在每周與每月重置歸零。
3.歷史排行則永不歸零。
開發者可在 arcalet 的開發者後台 ( http://developer.arcalet.com ) 定義遊戲各種積分版類別 ( Leader Board Class ) ,並取得積分版的 GUID ( 稱為 LGUID ) ,然後在遊戲程式中以 arcalet API 的 arcaletscore 類別之 static method 來處理遊戲進行中的各種積分版作業。

除了積分版外,arcalet 也提供玩家分數記錄服務,開發者可依遊戲的需要,在遊戲程式中記錄與查閱玩家的分數。由於玩家分數記錄只是玩家個人的分數資料庫,與積分版完全無關。不過,開發者若使用積分版的分數登錄 API 將玩家分數提交到積分版時,系統也會將此玩家的分數寫入到玩家個人的成績記錄中。

另外玩家也能使用規則精靈來達到自動發放獎勵的功能達到完全的自動化處理。
開發佈署:
佈署一
創建積分板並且命名為「分數排行榜」,把數據類型定義為「分數」;排列類型定義為「降序」;排行期限定義為「無」及覆蓋狀態定義為「不覆蓋」(請參考圖中的設定)。
佈署二
設定成功後點擊「建立積分板」即可完成取得 lguid 。
4.1 寫入排行榜
在讀取排行榜前,我們要先寫入幾筆資料。
Api:
一般上 使用第二個會是較好的選擇,因為這樣能讓排行榜攜帶更多資訊(note)。
寫入排行榜 Code:
C#
/*******************************************************************
	*	寫入LeaderBoard需要有lguid
	*******************************************************************/
	void WriteLeaderBoard() 
	{
		ArcaletScore.CommitLeaderBoard( ag, lguid, 0, str_value, CB_WriteLeaderBoard,
		 "Token-Score");
	}
	
	void CB_WriteLeaderBoard(int code, object token) {
		//Code為0表示寫入資料成功
		if(code == 0) {
			string attr = token.ToString();
			Debug.Log("WriteLeaderBoard : " + attr + " Successed");
		}
		//Code非0表示寫入資料失敗
		else {
			Debug.LogWarning("WriteLeaderBoard Failed - Error:" + code);
		}
	}
此篇範例位置: 
Assets\Scene\4\4_leaderboard
4.2 讀取排行榜
當我們寫入排行榜後,我們就能根據寫入的Lguid 做讀取動作。
讀取排行榜 Api:
小技巧:
在抓取排行榜的時候,開發者可以根據 排行類型(日,週,月)抓取,使到即使只有一個排行榜的Lguid 也能抓到3種類型。
除此之外,開發者也能自己定義讀取的數量,以免浪費多餘的讀取。
讀取排行榜 Code:
C#
void LoadLeaderBoard(string lguid)
    {
        ArcaletScore.GetLeaderBoard(ag, lguid, 0, 0, CB_LoadLeaderBoard, null);
    }

    void CB_LoadLeaderBoard(int code, object data, object token)
    {
        //Code為0表示讀取排行榜成功
        if (code == 0)
        {
            List<Hashtable> list = data as List<Hashtable>;
            Debug.Log("LoadLeaderBoard Successed - LeaderBoard Count : " + list.Count);


            for (int i = 0; i < list.Count; i++)
            {
                Debug.Log(string.Format("{0}. userid: {1} score: {2}"), i + 1, list[i]["userid"].ToString(), list[i]["score"].ToString());
            }
        }
        //Code非0表示讀取排行榜失敗
        else {
            Debug.LogWarning("LoadLeaderBoard Failed - Error:" + code);
        }
    }
執行畫面:
此篇範例位置: 
Assets\Scene\4\4_leaderboard
此執行畫面已經包含上傳與讀取。
另外,由於排行榜只能通過自己上傳(除了超級使用者賬號),所以需要切換賬號才能寫入不同的排行榜。
1
2
3
 23_20160729151020.zip  (3.78 MB)
您也可能喜歡這些文章
留言給作者
不公開此留言     登入即可留言
讀者留言
載入更多留言