Попытка выяснить, что пошло не так с этим плагином GPG. Я следил за инструкциями и понимал документ, чтобы проверить запуск логина и показать лидирующий интерфейс пользователя через этот one. Я сделал игровые достижения + лидеров с помощью учетной записи разработчика Google Play, сделайте настройку, скопируйте источник и сделайте это. Тестирование рекламы путем добавления Admob Пакет Unity и пакет GPG Unity, и он отлично работал. Я даже обновляю некоторые плагины для Android (и т. Д. .arar files, firebase-common, manifest), чтобы максимизировать совместимость и эффективность, чтобы я мог создавать APK без каких-либо проблем, мешающих наращиванию.Отображение пользовательского интерфейса Google Play Game Leaderboard не работает
Однако есть одна проблема: после того, как я вошел в систему и попытался нажать кнопку «show leaderboard UI» вместе с событием кнопки, который спрашивает, прошел ли аутентификация пользователя, и позволит вам записать ваш последний рекордер, обновив прежде чем показывать пользовательский интерфейс лидеров. Вот как работает код:
Во-первых, в() обратного вызова ...
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
.Build();
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
Далее, вот Логин/выход из системы процесс ...
public void LogInAccount() {
// Show dialog.
y = 0;
dialogPanel.SetActive (true);
dialogBackground.SetActive (true);
// You can logout if you're logged in.
if(Social.localUser.authenticated) {
((PlayGamesPlatform)Social.Active).SignOut();
y = 0;
message.text = "Your account have been logged out.";
logButtonLabel.text = "Log-in via Google";
button.SetActive (true);
confirmSound.Play();
return;
}
// Check for status.
if (CheckNetwork.checkOnlineStatus()) {
Social.localUser.Authenticate ((bool success) => {
if (success) {
// LOG IN SUCCESS! (Check if the email is identified or not.)
if((((PlayGamesLocalUser)Social.localUser).Email != null) || (((PlayGamesLocalUser)Social.localUser).Email != "")) {
y = 0;
message.text = "Login complete. However, email is not verified or unknown.";
logButtonLabel.text = "Log-out";
button.SetActive (true);
errorSound.Play();
} else {
y = 0;
message.text = "Login complete!\nYour email:" + ((PlayGamesLocalUser)Social.localUser).Email;
logButtonLabel.text = "Log-out";
button.SetActive (true);
confirmSound.Play();
}
} else if (!success) {
// LOG IN FAILED.
if((((PlayGamesLocalUser)Social.localUser).Email != null) || (((PlayGamesLocalUser)Social.localUser).Email != "")) {
message.text = "Login failed. Please try again later.\nYour email: ? ? ?";
} else {
message.text = "Login failed. Please try again later.\nYour email: " + ((PlayGamesLocalUser)Social.localUser).Email;
}
y = 0;
button.SetActive (true);
logButtonLabel.text = "Log-in via Google";
errorSound.Play();
}
});
} else {
message.text = "Connection is lost. Please enable online.";
button.SetActive (true);
}
}
И потом, показать событие callback/button в таблице лидеров.
public void OpenLeaderboard() {
// Show dialog.
y = 0;
dialogPanel.SetActive (true);
dialogBackground.SetActive (true);
// Check for status.
if (Social.localUser.authenticated && CheckNetwork.checkOnlineStatus()) {
// Updating your highscore...
Social.ReportScore ((long)Score.GetScore(),
AchievementReference.leaderboard_best_intergalactic_chasers_top_score,
(bool success) => {
if(success) {
// LEADERBOARD APPEARED!
dialogPanel.SetActive (false);
dialogBackground.SetActive (false);
confirmSound.Play();
Social.ShowLeaderboardUI();
// ((PlayGamesPlatform)Social.Active).ShowLeaderboardUI(AchievementReference.leaderboard_best_intergalactic_chasers_top_score);
} else {
y = 0;
message.text = "Load failed. Please try again later.";
button.SetActive (true);
errorSound.Play();
}
});
} else if (!Social.localUser.authenticated) {
y = 0;
confirmSound.Play();
button.SetActive (true);
if (!CheckNetwork.checkOnlineStatus()) {
message.text = "Connection not available at a moment.";
} else if (CheckNetwork.checkOnlineStatus()) {
message.text = "You must login first in order to see the leaderboard.";
}
}
}
В моей первой попытки, я логин (это показывает приветствие знак иногда) и нажмите кнопку Полноразмерный, но ничего не происходит после 2 минут. Вторая попытка - метод входа в систему log-log-log, и GPG предложила мне выбрать адрес электронной почты, и на экране появится знак приветствия. Тем не менее, все еще ... когда я постучал по кнопке UI, и ничего не происходит через 3 минуты. Я использовал ссылку this, чтобы получить больше идей об эффективном показе пользовательского интерфейса leaderboardc и проверить образец кода. Окончательная попытка, и я предположил, что пользовательский интерфейс лидеров не появится до тех пор, пока я не опубликую созданные игровые службы (раньше он был установлен для тестирования) и посмотрел, работает ли пользовательский интерфейс лидера. Затем, через день или два, использовал тот же метод с первой попытки и все равно не повезло.
Вопрос заключается в следующем: как же пользовательский интерфейс лидеров не будет отображаться во время тестового режима и даже после опубликования игровых сервисов через раздел разработчика Google Play Services? То же самое происходит при отображении в пользовательском интерфейсе достижений. В чем была причина, препятствующая отображению пользовательского интерфейса лидера, даже если я сделал это правильно в настройке? Я сомневаюсь, что это проблемы с подключением к Интернету или сигнал Wi-Fi. Вероятно, проблема связана с большой нагрузкой на очень простые игровые сервисы, которые я сделал. Я создал только два лидеров (рекорд и количество уничтоженных кораблей) и пять достижений по достижению определенного балла и нет. разрушенных кораблей.
Кроме того, помимо отображения проблем пользовательского интерфейса лидеров, также возникает ошибка, которая оставляет строковое значение (фактически, я извлекаю с выбранным адресом электронной почты) нулевым или пустым, даже если он успешно зарегистрирован с помощью последующей учетной записи Google по приветствию имени пользователя в верхней части экрана.
UPDATE После того как я проверил ошибки и предложить какое-то решение от С. Tarik Четин, я проверил на LogCat о входе в систему. Сначала я подумал, что это успешный вход в систему. Тогда я заметил это:
W/Unity (32099): *** [Play Games Plugin DLL] 07/05/16 14:33:54 -07:00 ERROR: E
xception launching token request: java.lang.ClassNotFoundException: com.google.g
ames.bridge.TokenFragment
W/Unity (32099):
W/Unity (32099): (Filename: ./artifacts/generated/common/runtime/UnityEngineDe
bugBindings.gen.cpp Line: 37)
W/Unity (32099):
W/Unity (32099): *** [Play Games Plugin DLL] 07/05/16 14:33:54 -07:00 ERROR: U
nityEngine.AndroidJavaException: java.lang.ClassNotFoundException: com.google.ga
mes.bridge.TokenFragment
W/Unity (32099): java.lang.ClassNotFoundException: com.google.games.bridge.Tok
enFragment
W/Unity (32099): at java.lang.Class.classForName(Native Method)
W/Unity (32099): at java.lang.Class.forName(Class.java:217)
W/Unity (32099): at java.lang.Class.forName(Class.java:172)
W/Unity (32099): at com.unity3d.player.UnityPlayer.nativeRender(Native Me
thod)
W/Unity (32099): at com.unity3d.player.UnityPlayer.a(Unknown Source)
W/Unity (32099): at com.unity3d.player.UnityPlayer$b.run(Unknown Source)
W/Unity (32099): Caused by: java.lang.NoClassDefFoundError: com/google/games/b
ridge/TokenFragment
W/Unity (32099): ... 6 more
W/Unity (32099): Caused by: java.lang.ClassNotFoundException: com.google.games
.bridge.TokenFragment
W/Unity (32099): at dalvik.system.BaseDexClassLoader.findClass(BaseDexCla
ssLoader.java:61)
W/Unity (32099): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
W/Unity (32099): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
W/Unity (32099): ... 6 more
W/Unity (32099): at UnityEngine.AndroidJNISafe.CheckException() [0x00000] i
n <filename unknown>:0
W/Unity (32099): at UnityEn
Кроме того, я столкнулся статус сформировать свой LogCat, когда я сделал знак в и один раз.
W/Unity (32099): at UnityEn
I/Unity (32099): [Play Games Plugin DLL] 07/05/16 14:38:07 -07:00 DEBUG: Star
ting Auth Transition. Op: SIGN_OUT status: ERROR_NOT_AUTHORIZED
I/Unity (32099):
I/Unity (32099): (Filename: ./artifacts/generated/common/runtime/UnityEngineDe
bugBindings.gen.cpp Line: 37)
I/Unity (32099):
И, наконец, вот проблема, возникшая при попытке сразу открыть пользовательский интерфейс лидеров.
W/Unity (32099): *** [Play Games Plugin DLL] 07/05/16 14:40:31 -07:00 ERROR: U
nityEngine.AndroidJavaException: java.lang.ClassNotFoundException: com.google.ga
mes.bridge.NativeBridgeActivity
W/Unity (32099): java.lang.ClassNotFoundException: com.google.games.bridge.Nat
iveBridgeActivity
W/Unity (32099): at java.lang.Class.classForName(Native Method)
W/Unity (32099): at java.lang.Class.forName(Class.java:217)
W/Unity (32099): at java.lang.Class.forName(Class.java:172)
W/Unity (32099): at com.unity3d.player.UnityPlayer.nativeRender(Native Me
thod)
W/Unity (32099): at com.unity3d.player.UnityPlayer.a(Unknown Source)
W/Unity (32099): at com.unity3d.player.UnityPlayer$b.run(Unknown Source)
W/Unity (32099): Caused by: java.lang.NoClassDefFoundError: com/google/games/b
ridge/NativeBridgeActivity
W/Unity (32099): ... 6 more
W/Unity (32099): Caused by: java.lang.ClassNotFoundException: com.google.games
.bridge.NativeBridgeActivity
W/Unity (32099): at dalvik.system.BaseDexClassLoader.findClass(BaseDexCla
ssLoader.java:61)
W/Unity (32099): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
W/Unity (32099): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
W/Unity (32099): ... 6 more
W/Unity (32099): at UnityEngine.AndroidJNISafe.CheckException() [0x00000] i
n <filen
UPDATE Я сделал ошибку, о проверке, если адрес электронной почты пуст или нет. Я сделал неправильное чтение. Хотя, значение адреса электронной почты все еще имеет проблему, и оно должно возвращаться с идентифицированными в строчном значении и оставлять с пробелом, когда оно читается не пустым.
// LOG IN SUCCESS! (Check if the email is identified or not.)
if((((PlayGamesLocalUser)Social.localUser).Email != null) || (((PlayGamesLocalUser)Social.localUser).Email != "")) {
y = 0;
message.text = "Login complete!\nYour email:" + ((PlayGamesLocalUser)Social.localUser).Email;
logButtonLabel.text = "Log-out";
button.SetActive (true);
confirmSound.Play();
} else {
y = 0;
message.text = "Login complete. However, email is not verified or unknown.";
logButtonLabel.text = "Log-out";
button.SetActive (true);
errorSound.Play();
}
Проверьте решение здесь, в этом вопросе [SO вопрос] (http://stackoverflow.com/questions/36933159/google-play-leaderboard-not-showing-up-after-posting-score-to-leaderboard-in- uni? rq = 1), если это может вам помочь. – KENdi
@KENdi Хорошо. Я дам вам знать, есть ли обновление. Я посмотрю ... –
@ KENdi Основываясь на одной из деталей по ссылке, которую вы мне дали, я уже установил тестер, включая меня. Но лидирующий пользовательский интерфейс пока не отображается даже после того, как я решил опубликовать таблицу лидеров. Кроме того, я использовал только одно хранилище ключей, а не * debug.keystore *. –