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

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

ก่อนเริ่มต้น

ซึ่งหากคุณยังไม่ได้อ่าน อาจเป็นประโยชน์ในการตรวจสอบ แนวคิดเกมลีดเดอร์บอร์ด

ก่อนที่คุณจะเริ่มสร้างโค้ดโดยใช้ API ลีดเดอร์บอร์ด ให้ทำดังนี้

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

เกมของคุณต้องได้รับออบเจ็กต์ LeaderboardsClient ก่อนจึงจะเริ่มใช้ API ลีดเดอร์บอร์ดได้ ซึ่งทำได้ด้วยการเรียกใช้เมธอด Games.getLeadeboardsClient() และส่งใน กิจกรรมและ GoogleSignInAccount สำหรับโปรแกรมเล่นปัจจุบัน หากต้องการทราบวิธีเรียกข้อมูล ข้อมูลบัญชีผู้เล่น โปรดดูการลงชื่อเข้าใช้ใน Android Games

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

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

ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีที่แอปอัปเดตคะแนนของผู้เล่นได้

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(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() {
  Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(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 ลีดเดอร์บอร์ดแสดงอยู่ด้านล่าง