更新时间:2023-01-01 11:14:58
要求:谷歌(SDK中的额外经理下),发挥服务和谷歌Repostory,的 BaseGameUtils
Requirements: Google play services and Google Repostory (under Extras in SDK manager), BaseGameUtils
Firstly we need to add BaseGameUtils as Module:
然后选择导入摇篮项目,并选择BaseGameUtil文件夹(在项目步骤之前,不要复制BaseGameUtils,让Android的工作室做到这一点)
gradle这个与同步selefct构建完成后>使模块'BaseGameUtils
then select Import Gradle Project and chose BaseGameUtil folder (do not copy BaseGameUtils in project before that step. Let Android Studio do that) After gradle is done with syncing selefct Build > Make Module 'BaseGameUtils'
有关integranting BaseGameUtils最后一步是把它列入到机器人模块:
同步项目之后。
Last step for integranting BaseGameUtils is to include it into android module: Sync project afterwards.
现在是时候打开你的AndroidManifest文件,包括:
Now it's time to open your AndroidManifest file and include:
之前的应用程序的标签
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
注意:有没有必要加入谷歌扮演的gradle的android脚本依赖becouse它已经包含在BaseGameUtils
NOTE: there is no need to add google play dependencies in android gradle script becouse it is already included in BaseGameUtils
在应用的,之前的活动的
<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" />
现在,你需要设置Srtings APP_ID电话(Android / RES /价值/ strings.xml中)
Now you need to set app_id number in Srtings (android/res/values/Strings.xml)
<string name="app_id">928019648708</string>
您的应用程序ID位于下游戏服务节GOOGLEPLAY开发者控制台(下游戏名)
Your app id is located in GooglePlay developer console under Game Services section (under game name)
有关通过Android原生code到游戏code,我们将创建核心模块ActionResolver接口:
For passing android native code to game code we will create ActionResolver interface in core module:
package com.mygame.test;
public interface ActionResolver {
public boolean getSignedInGPGS();
public void loginGPGS();
public void submitScoreGPGS(int score, String id);
public void unlockAchievementGPGS(String achievementId);
public void getLeaderboardGPGS();
public void getAchievementsGPGS();
}
现在,我们需要在AndroidLauncher类(检查进口如果你有问题)的变化:
Now we need to make changes in AndroidLauncher class (check imports if you have problems):
package com.mygame.test.android;
import android.os.Bundle;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.google.android.gms.games.Games;
import com.google.example.games.basegameutils.GameHelper;
import com.mygame.test.ActionResolver;
import com.mygame.test.MyGame;
public class AndroidLauncher extends AndroidApplication implements ActionResolver, GameHelper.GameHelperListener {
private GameHelper gameHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (gameHelper == null) {
gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
gameHelper.enableDebugLog(true);
}
gameHelper.setup(this);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MyGame(this), config);
}
@Override
public boolean getSignedInGPGS() {
return gameHelper.isSignedIn();
}
@Override
public void loginGPGS() {
try {
runOnUiThread(new Runnable() {
public void run() {
gameHelper.beginUserInitiatedSignIn();
}
});
} catch (final Exception ex) {
Gdx.app.log("MainActivity", "Log in failed: " + ex.getMessage() + ".");
}
}
@Override
public void submitScoreGPGS(int score, String id) {
Games.Leaderboards.submitScore(gameHelper.getApiClient(), id, score);
}
@Override
public void unlockAchievementGPGS(String achievementId) {
Games.Achievements.unlock(gameHelper.getApiClient(), achievementId);
}
@Override
public void getLeaderboardGPGS() {
if (gameHelper.isSignedIn()) {
startActivityForResult(Games.Leaderboards.getLeaderboardIntent(gameHelper.getApiClient(), "CgkI5MyZk4FbHAJQXQ"), 100);
} else if (!gameHelper.isConnecting()) {
loginGPGS();
}
}
@Override
public void getAchievementsGPGS() {
if (gameHelper.isSignedIn()) {
startActivityForResult(Games.Achievements.getAchievementsIntent(gameHelper.getApiClient()), 101);
} else if (!gameHelper.isConnecting()) {
loginGPGS();
}
}
@Override
public void onSignInFailed() {
gameHelper.getSignInError();
}
@Override
public void onSignInSucceeded() {
}
}
在主类中创建的构造函数(在这个例子中MyGame):
Create constructor in your main class (MyGame in this example):
public ActionResolver resolver;
public Base(ActionResolver ar) {
resolver = ar;
}
与gplay业务的呼叫连接:
to connect with gplay services call:
if (!resolver.getSignedInGPGS())
resolver.loginGPGS();
解锁成就,并提交成绩:
unlock achievements and submit scores with:
if (resolver.getSignedInGPGS()){
if (currentScore == 0){
resolver.unlockAchievementGPGS("CgkI5MyZk4EbEAIQAg");
}
if (Cookie.bestScore >= 100){
resolver.unlockAchievementGPGS("CgkI5MyZk4EbEAIQAw");
}
resolver.submitScoreGPGS(Cookie.bestScore, "CgkI5MyZk4EbEAIQAQ");
}
的注:对应的ID valuses用在开发者控制台中发现的每个成就和leaderbord 的
和调用排行榜和成就与
resolver.getLeaderboardGPGS();
resolver.getAchievementsGPGS();
最后桌面,iOS和HTML发射可以以同样的方式(例如桌面启动器)来解决。
Lastly desktop, ios and html launcher can be resolved in the same way (example for desktop launcher)
public static void main (String[] arg) {
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
ActionResolver resolver= new ActionResolver() {
@Override
public boolean getSignedInGPGS() {
return false;
}
@Override
public void loginGPGS() {
}
@Override
public void submitScoreGPGS(int score, String id) {
}
@Override
public void unlockAchievementGPGS(String achievementId) {
}
@Override
public void getLeaderboardGPGS() {
}
@Override
public void getAchievementsGPGS() {
}
};
new LwjglApplication(new MyGame(resolver), config);
}