ลีดเดอร์บอร์ดในเกม Android

คําแนะนํานี้แสดงวิธีใช้ API ลีดเดอร์บอร์ดในแอปพลิเคชัน Android เพื่อสร้างลีดเดอร์บอร์ดภาพ บันทึกคะแนนของผู้เล่น และเปรียบเทียบคะแนน กับคะแนนของผู้เล่นจากเซสชันเกมก่อนหน้า โดย API จะอยู่ในแพ็กเกจ com.google.android.gms.games และ com.google.android.gms.games.leaderboards

ข้อควรทราบก่อนที่จะเริ่มต้น

เราขอแนะนําให้อ่านแนวคิดของเกมในลีดเดอร์บอร์ดหากยังไม่ได้อ่าน

ก่อนที่จะเริ่มเขียนโค้ดโดยใช้ API ลีดเดอร์บอร์ด

กําลังโหลดไคลเอ็นต์ลีดเดอร์บอร์ด

เกมจะต้องได้รับออบเจ็กต์ LeaderboardsClient ก่อนเพื่อเริ่มใช้ลีดเดอร์บอร์ด API ซึ่งทําได้โดยการเรียกเมธอด Games.getLeadeboardsClient() แล้วส่งผ่านกิจกรรม

กําลังอัปเดตคะแนนของผู้เล่น

เมื่อมีการเปลี่ยนแปลงคะแนนของผู้เล่น (เช่น เมื่อผู้เล่นจบเกม) เกมของคุณจะอัปเดตคะแนนในลีดเดอร์บอร์ดได้โดยเรียกใช้ LeaderboardsClient.submitScore() และส่งรหัสลีดเดอร์บอร์ดและค่าคะแนนดิบ

ข้อมูลโค้ดต่อไปนี้แสดงให้เห็นว่าแอปสามารถอัปเดตคะแนนของผู้เล่นได้อย่างไร

PlayGames.getLeaderboardsClient(this)
    .submitScore(getString(R.string.leaderboard_id), 1337);

แนวทางปฏิบัติที่ดีคือการกําหนดรหัสลีดเดอร์บอร์ดในไฟล์ strings.xml เพื่อให้เกมของคุณอ้างอิงลีดเดอร์บอร์ดได้ตามรหัสทรัพยากร เมื่อเรียกใช้เพื่ออัปเดตและโหลดคะแนนผู้เล่น โปรดทําตามแนวทางปฏิบัติแนะนําเหล่านี้เพื่อไม่ให้ใช้ API เกินโควต้า

การแสดงลีดเดอร์บอร์ด

หากต้องการแสดงลีดเดอร์บอร์ด ให้เรียกใช้ LeaderboardsClient.getLeaderboardIntent() เพื่อรับ Intent เพื่อสร้างอินเทอร์เฟซผู้ใช้ลีดเดอร์บอร์ดเริ่มต้น จากนั้นเกมของคุณจะเปิด UI ด้วยการเรียก startActivityForResult

ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีที่แอปของคุณอัปเดตคะแนนของผู้เล่น ในข้อมูลโค้ด RC_LEADERBOARD_UI เป็นจํานวนเต็มที่กําหนดเองสําหรับโค้ดคําขอ

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

โปรดทราบว่าแม้จะไม่มีการแสดงผลการค้นหา แต่จะต้องใช้ startActivityForResult เพื่อให้ API รับข้อมูลประจําตัวของแพ็กเกจการโทรได้ ด้านล่างคือตัวอย่าง UI ของลีดเดอร์บอร์ดเริ่มต้น