什么是MyGameProgress课程?

时间:2015-03-13 18:40:23

标签: android google-play-games google-api-client

我试图制作一个存储高分的游戏。

"在Android上实施登录"链接:

https://developers.google.com/games/services/training/signin#signing_the_player_in_at_startup

说使用MyGameProgress类来保存分数,成就等。 但是,我得到一个"无法解析符号MyGameProgress"当我尝试将变量声明为MyGameProgress时 (例如MyGameProgress mGameProgress = new MyGameProgress())

有人有线索吗?

下面的

是我的MainActivity.java文件:


import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.games.Games;
import com.google.example.games.basegameutils.BaseGameUtils;



public class MainActivity extends ActionBarActivity {

    int Score = 0;

    GoogleApiClient mGoogleApiClient;
    MyGameProgress mGameProgress = new MyGameProgress();


    private static int RC_SIGN_IN = 9001;
    private boolean mResolvingConnectionFailure = false;
    private boolean mAutoStartSignInFlow = true;
    private boolean mSignInClicked = false;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        if (mResolvingConnectionFailure) {
            // Already resolving
            return;
        }

        // If the sign in button was clicked or if auto sign-in is enabled,
        // launch the sign-in flow


        if (mSignInClicked || mAutoStartSignInFlow) {
            mAutoStartSignInFlow = false;
            mSignInClicked = false;
            mResolvingConnectionFailure = true;

            // Attempt to resolve the connection failure using BaseGameUtils.
            // The R.string.signin_other_error value should reference a generic
            // error string in your strings.xml file, such as "There was
            // an issue with sign in, please try again later."
            if (!BaseGameUtils.resolveConnectionFailure(this,
                    mGoogleApiClient, connectionResult,
                    RC_SIGN_IN, "R.string.signin_other_error")) {
                mResolvingConnectionFailure = false;
            }
        }

        // Put code here to display the sign-in button
    }




    public void increaseScore(View view) {
        Score = Score + 1;
        TextView ScoreTextV = (TextView)findViewById(R.id.textView);

        ScoreTextV.setText(Integer.toString(Score));
    };

    public void FinishGame(View view) {
        //Games.Leaderboards.submitScore(getApiClient(),
        //        getString(R.string.leaderboard_high_score), Score);


        // when user finishes level:
        mGameProgress.addScore(userScore);
        mGameProgress.addAchievement(fooAchievement);
        mGameProgress.addAchievement(barAchievement);
        if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
            mGameProgress.save(mGoogleApiClient);
        }


    }
}

在我的build.gradle(module.app)中我将它包含在依赖项中:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':BaseGameUtils')
    compile 'com.android.support:appcompat-v7:21.0.3'
    //compile 'com.google.android.gms:play-services-games:6.5.87'
    compile 'com.google.android.gms:play-services:6.5.+'

在我的AndroidManifest.xml中,我包括:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />

    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

我还导入了BaseGameUtils模块。


为方便起见,以下是&#34;在Android上实施登录&#34;的代码段。我在上面提供的链接:

MyGameProgress mGameProgress = ....;

// when user finishes level:
mGameProgress.addScore(userScore);
mGameProgress.addAchievement(fooAchievement);
mGameProgress.addAchievement(barAchievement);
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
    mGameProgress.save(mGoogleApiClient);
}

@Override
protected void onConnected() {
    // sign in successful, so save progress if we have any.  
    if (mGameProgress != null) {
        mGameProgress.save(mGoogleApiClient);
    }

    // ...
}

如果我需要自己创建MyGameProgress课程,我不知道如何创建“保存”课程。方法,以便它将高分保存到游戏服务云。


我还看到了关于&#39;快照&#39;用于保存游戏进度。你认为这是一个更好的方法吗?我应该研究这样做吗?

1 个答案:

答案 0 :(得分:1)

事实证明,MyGameProgress(具有'save'方法)是文档希望我创建的类。
但是,我能够使用Games.Leaderboards.submitScore方法。

我能够使用该声明: Games.Leaderboards.submitScore(mGoogleApiClient,getString(R.string.leaderboard_high_score),Score);

注意: 最初有些文件说要使用 Games.Leaderboards.submitScore(getApiClient(),getString(R.string.leaderboard_high_score),Score);

但是getApiClient()部分使它无法正常工作。 在我用一个替换它之后它工作了 GoogleApiClient变量mGoogleApiClient。