Google Play游戏服务入门
游戲技術(shù)在不斷發(fā)展。 然而,數(shù)十年來,許多核心游戲玩法元素保持不變。 高分,排行榜,任務(wù),成就和多人支持就是例子。 如果您正在為Android平臺開發(fā)游戲,則無需手動實現(xiàn)任何這些元素。 您可以直接使用Google Play游戲服務(wù) API。
在本教程中,我將向您展示如何創(chuàng)建一個簡單的Android游戲,如何向其中添加Google Play游戲服務(wù)以及如何使用排行榜和成就API。
先決條件
為了能夠遵循本教程,您需要具備以下條件:
- 最新版本的Android Studio 。
- 安裝了最新版本的Google Play服務(wù)應(yīng)用的Android設(shè)備。
1.創(chuàng)建一個簡單的游戲
將Play游戲服務(wù)API添加到空白的Android Studio項目中沒有任何樂趣。 因此,現(xiàn)在讓我們創(chuàng)建一個游戲,用戶只需單擊一個按鈕即可獲得積分。 更準(zhǔn)確地說,游戲的目標(biāo)是在60秒內(nèi)盡可能多地單擊一個按鈕。
第1步:創(chuàng)建游戲布局
游戲的布局將具有一個Button小部件,用戶將單擊該Button小部件以獲取積分,以及兩個TextView小部件以顯示分數(shù)和剩余時間。 如果將它們?nèi)糠胖迷赗elativeLayout并在水平和垂直方向上居中,則應(yīng)具有如下所示的布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.tutsplus.mylittlegame.MainActivity"><Buttonandroid:text="Start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_centerHorizontal="true"android:id="@+id/main_button" /><TextViewandroid:text="Time remaining: 0 seconds"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/main_button"android:layout_centerHorizontal="true"android:layout_marginTop="25dp"android:id="@+id/time_view" /><TextViewandroid:text="Score: 0"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@+id/main_button"android:layout_marginBottom="28dp"android:layout_centerHorizontal="true"android:id="@+id/score_view" /></RelativeLayout>我們的游戲?qū)⒂幸粋€排行榜屏幕和一個成就屏幕。 要允許用戶導(dǎo)航到這些屏幕,請在布局文件的末尾添加兩個以上的Button小部件。
<Buttonandroid:text="Achievements"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_alignParentLeft="true"android:id="@+id/achievements_button"android:onClick="showAchievements"/><Buttonandroid:text="Leaderboard"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_alignParentRight="true"android:id="@+id/leaderboard_button"android:onClick="showLeaderboard"/> 請注意,兩個按鈕都具有onClick屬性。 我們將在以后的步驟中創(chuàng)建它們引用的Java方法。
步驟2:實施游戲邏輯
在活動內(nèi)部,為我們在布局XML文件中定義的游戲小部件創(chuàng)建成員變量。 此外,為得分創(chuàng)建一個int變量,為游戲狀態(tài)創(chuàng)建一個boolean變量。
private Button mainButton; private TextView scoreView; private TextView timeView;private int score = 0; private boolean playing = false;使用findViewById()方法初始化活動的onCreate()方法內(nèi)的小部件。
mainButton = (Button)findViewById(R.id.main_button); scoreView = (TextView)findViewById(R.id.score_view); timeView = (TextView)findViewById(R.id.time_view);要偵聽Button小部件上的單擊,請創(chuàng)建一個OnClickListener并將其添加到其中。
mainButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// More code goes here} });現(xiàn)在,我們必須實現(xiàn)以下要求:
- 用戶第一次單擊按鈕時,游戲必須開始。
- 隨后的每次點擊都應(yīng)增加score變量。
- 游戲必須在60秒后結(jié)束。
我們可以使用playing變量來區(qū)分首次點擊和所有后續(xù)點擊。 為了跟蹤時間,我們可以使用抽象的CountDownTimer類,它非常適合我們的需求。 它內(nèi)部有一個onTick()方法,可以準(zhǔn)確地更新timeView以顯示剩余的秒數(shù)。 它還具有onFinish()方法,當(dāng)?shù)褂嫊r結(jié)束時將調(diào)用該方法。
因此,將以下代碼添加到onClick()方法:
if(!playing) {// The first clickplaying = true;mainButton.setText("Keep Clicking");// Initialize CountDownTimer to 60 secondsnew CountDownTimer(60000, 1000) {@Overridepublic void onTick(long millisUntilFinished) {timeView.setText("Time remaining: " + millisUntilFinished/1000);}@Overridepublic void onFinish() {playing = false;timeView.setText("Game over");mainButton.setVisibility(View.GONE);}}.start(); // Start the timer } else {// Subsequent clicksscore++;scoreView.setText("Score: " + score + " points"); }此時,您可以運行項目以玩游戲。
2.添加游戲服務(wù)依賴項
配置項目以使用Play游戲服務(wù)API涉及許多步驟。 通過使用Android Studio的Firebase助手,可以使其中一些自動化。
轉(zhuǎn)到“ 工具”>“ Firebase”,打開助手窗口。 接下來,在“ 分析”部分中,單擊“ 記錄分析事件”鏈接。 現(xiàn)在,您可以通過單擊“ 連接 到Firebase”按鈕將 Android Studio項目連接到Firebase項目。 確保在彈出的對話框中選擇“ 創(chuàng)建新的Firebase項目”選項。
建立連接后,請按向應(yīng)用程序添加分析按鈕以將所有必需的更改添加到build.gradle文件。
您必須手動添加Play游戲服務(wù)的依賴關(guān)系。 因此,轉(zhuǎn)到app模塊的build.gradle文件并添加以下compile依賴項:
compile 'com.google.android.gms:play-services-games:9.8.0' 此外,游戲服務(wù)API需要XML配置文件。 在res / values文件夾中創(chuàng)建一個名為games-ids.xml的文件。 我們將在以后的步驟中添加內(nèi)容。
3.注冊游戲
所有使用Google Play游戲服務(wù)的游戲都必須在Play開發(fā)者控制臺上注冊。 您必須支付25美元的一次性注冊費才能訪問控制臺。
在控制臺中,單擊游戲板圖標(biāo)以打開“ 游戲服務(wù)”屏幕。
接下來,點擊設(shè)置Google Play游戲服務(wù)按鈕以開始注冊游戲。
在彈出的對話框中,選擇第二個標(biāo)簽,因為我們的游戲已經(jīng)在使用Google API。 現(xiàn)在,您必須能夠在可用項目列表中查看Firebase項目的名稱。 選擇它之后,為游戲選擇一個類別。 目前,您可以使用“ 休閑”類別。
按“ 繼續(xù)”后 ,您可以通過單擊“ 鏈接Firebase”按鈕來鏈接Firebase Analytics和Play游戲服務(wù)。
接下來,轉(zhuǎn)到“ 鏈接的應(yīng)用程序”部分,將您的Android Studio項目鏈接到Play開發(fā)者控制臺。 在彈出的對話框中,按Android按鈕,然后在“ 包名稱”字段中輸入項目的包名稱。
按“ 保存并繼續(xù)”按鈕為您的游戲生成客戶端ID。
我們的游戲現(xiàn)已成功在Google Play開發(fā)者控制臺中注冊。
4.添加測試用戶
僅當(dāng)您的游戲在Google Play上發(fā)布時,Play游戲服務(wù)API才有效。 但是,為了允許您測試游戲,開發(fā)人員控制臺可讓您關(guān)聯(lián)一些測試用戶帳戶。 通過轉(zhuǎn)到“ 測試”部分,您可以添加或刪除測試用戶帳戶。 確保在此處添加您在手機或模擬器上使用的Google帳戶。
5.創(chuàng)建排行榜
排行榜不過是顯示用戶高分的屏幕。 Play游戲服務(wù)排行榜可讓用戶查看其每日,每周和歷史最高分。
在Play開發(fā)者控制臺上創(chuàng)建排行榜只需點擊幾下。 轉(zhuǎn)到排行榜部分,然后按添加排行榜按鈕。 在下一個屏幕中,給排行榜起一個有意義的名稱,然后按保存按鈕。
現(xiàn)在我們的排行榜已經(jīng)準(zhǔn)備就緒。
6.創(chuàng)造成就
成就是用戶在管理方面做出的特殊貢獻而獲得的游戲獎勵。 具有很多成就可以解鎖的游戲通常比沒有游戲要有趣。 因此,當(dāng)今Google Play上的大多數(shù)熱門游戲都有數(shù)十種甚至數(shù)百種成就。
在本教程中,我們將僅向游戲添加一項成就。 其名稱將為Lightning Fast ,當(dāng)用戶每分鐘要嘗試點擊按鈕100次以上時,它將被解鎖。 要創(chuàng)建成就,請轉(zhuǎn)到“ 成就”部分,然后按“ 添加成就”按鈕。 輸入成就的名稱和描述后,按保存按鈕。
7.更新游戲配置XML
排行榜和成就都有唯一的標(biāo)識符。 現(xiàn)在,我們必須將這些標(biāo)識符以及注冊過程中生成的應(yīng)用程序ID添加到我們的Android Studio項目中。 您可以通過手動更新我們之前創(chuàng)建的games-ids.xml文件來實現(xiàn)。 但是,我建議您使用開發(fā)者控制臺中可用的自動生成的配置代碼。
要獲取自動生成的配置代碼,您可以轉(zhuǎn)到“ 成就”部分或“ 排行榜”部分,然后按“ 獲取資源”鏈接。 您將看到如下所示的XML代碼:
<?xml version="1.0" encoding="utf-8"?> <!-- Google Play game services IDs. Save this file as res/values/games-ids.xml in your project. --> <resources><string name="app_id">1234567890</string><string name="package_name">com.tutsplus.mylittlegame</string><string name="achievement_lightning_fast">HzkA4Kz04F8MRYIAze</string><string name="leaderboard_my_little_leaderboard">HzkA4Kz04F8MRYIBVU</string> </resources> 復(fù)制所有代碼并將其粘貼到項目的games-ids.xml文件中。
8.連接到Play游戲服務(wù)
在使用排行榜和成就API之前,我們必須創(chuàng)建一個GoogleApiClient實例并將其連接到Play游戲服務(wù)。 因此,將GoogleApiClient對象添加為您的活動的成員變量。
我們必須使用GoogleApiClient.Builder類來構(gòu)建GoogleApiClient實例。 在構(gòu)建客戶端時,我們可以使用addApi()和addScope()方法指定我們感興趣的API和API范圍。
此外,我建議您調(diào)用enableAutoManage()方法以確保客戶端自動管理與游戲服務(wù)的連接。 但是,該方法需要一個OnConnectionFailedListener ,當(dāng)連接失敗時將調(diào)用該方法。 現(xiàn)在,我們將簡單地調(diào)用finish()方法以在連接失敗的情況下關(guān)閉應(yīng)用程序。
因此,在onCreate()方法的開頭添加以下代碼:
apiClient = new GoogleApiClient.Builder(this).addApi(Games.API).addScope(Games.SCOPE_GAMES).enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {@Overridepublic void onConnectionFailed(@NonNull ConnectionResult connectionResult) {Log.e(TAG, "Could not connect to Play games services");finish();} }).build();如果立即運行該應(yīng)用程序,系統(tǒng)將提示您為自己創(chuàng)建一個玩家ID。 輸入您選擇的玩家ID,然后按“ 登錄”按鈕。
9.使用排行榜
將分數(shù)提交到排行榜僅需一行代碼。 您需要做的就是調(diào)用Games.Leaderboards類的submitScore()方法。 作為參數(shù),它需要GoogleApiClient實例,排行榜的ID和得分。
在我們的游戲中,我們必須在60秒結(jié)束時提交分數(shù)。 因此,將以下代碼添加到onFinish()方法中:
Games.Leaderboards.submitScore(apiClient,getString(R.string.leaderboard_my_little_leaderboard),score); 要查看排行榜,我們必須以排行榜意圖開始新的活動。 要獲取頁首橫幅意圖,請調(diào)用Games.Leaderboards類的getLeaderboardIntent()方法,并將GoogleApiClient實例和頁首橫幅ID傳遞給它。
我們游戲的布局已經(jīng)有一個按鈕,可以按下該按鈕來打開排行榜。 其onClick屬性的值為showLeaderboard 。 因此,將以下代碼添加到您的活動中:
public void showLeaderboard(View v) {startActivityForResult(Games.Leaderboards.getLeaderboardIntent(apiClient,getString(R.string.leaderboard_my_little_leaderboard)), 0); }您可以立即運行該應(yīng)用程序,然后再次玩游戲。 這次,游戲結(jié)束時,您的分數(shù)將被提交到排行榜。 這是默認排行榜的樣子:
10.使用成就
通過調(diào)用Games.Achievements類的unlock()方法,您可以解鎖任何成就。 該方法期望GoogleApiClient實例和成就的ID作為其唯一參數(shù)。
當(dāng)用戶的分數(shù)超過100分時,我們必須解鎖在控制臺中定義的“閃電般的成就”。 因此,在增加分數(shù)的代碼之后,添加以下代碼:
if(score>100) {Games.Achievements.unlock(apiClient, getString(R.string.achievement_lightning_fast)); }顯示成績屏幕所需的代碼與我們編寫的用于顯示排行榜屏幕的代碼非常相似。 您需要做的就是將getAchievementsIntent()方法的返回值傳遞給startActivityForResult()方法。
public void showAchievements(View v) {startActivityForResult(Games.Achievements.getAchievementsIntent(apiClient),1); }如果您運行應(yīng)用并再次玩游戲,當(dāng)您的分數(shù)首次超過100分時,您會看到一個成就彈出窗口。
結(jié)論
現(xiàn)在,您知道如何在Android Studio項目中使用Google Play游戲服務(wù)API。 Play游戲服務(wù)不僅限于Android平臺。 它們也可以在Web和iOS平臺上輕松使用。 因此,Play游戲服務(wù)可讓您創(chuàng)建跨平臺游戲,并為多個平臺上的用戶提供一致的游戲體驗。
翻譯自: https://code.tutsplus.com/tutorials/get-started-with-google-play-games-services--cms-27755
總結(jié)
以上是生活随笔為你收集整理的Google Play游戏服务入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux qt 获取u盘名称,QT w
- 下一篇: 新建销售群开场语句_新建群开场语句