2015-03-13 72 views
1

我正在尝试做一个游戏,我存储高分。什么是MyGameProgress类?

的“实现登录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模块。


为了方便起见,这里是从我上面提供的“实现登录Android上的”链接的代码片段:

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类我自己,我不知道如何创建'保存'方法,以便将高分存入游戏服务云。


我还看到了一些关于'快照'来保存游戏进度。你认为这是一个更好的方式吗?我应该这样研究吗?

+0

您是否将适当的库添加到您的项目并导入正确的类? – JonasCz 2015-03-13 18:48:35

+0

感谢您的回应。我刚添加了关于我添加到我的build.gradle和AndroidManifest文件的信息。希望这可以帮助你更好地了解可能的错误。 – 2015-03-13 21:24:58

+0

我导入了BaseGameUtils模块。 – 2015-03-13 21:28:43

回答

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),分数);

但getApiClient()部分使它无法正常工作。 它在我将它替换为 GoogleApiClient变量mGoogleApiClient后生效。