Google Play Services Unity 插件不显示排行榜
Google Play Services Unity Plugin not Show Leaderboard
我正在使用 Unity 5 为 Android 构建游戏,我已经导入了这个 plugin
但是它不能正常工作我按照这个 tutorial :
当我尝试 post 或显示排行榜时,它没有显示任何内容。它甚至没有抛出任何错误。登录和注销正常 properly.Please 帮助
代码:
public void LogIn ()
{
Social.localUser.Authenticate ((bool success) =>
{
if (success) {
Debug.Log ("Login Sucess");
} else {
Debug.Log ("Login failed");
}
});
}
public void LogOut ()
{
PlayGamesPlatform.Instance.SignOut ();
}
public void Post ()
{
if (Social.localUser.authenticated) {
Social.ReportScore (5000, LeaderbordId, (bool success) =>
{
if (success) {
((PlayGamesPlatform)Social.Active).ShowLeaderboardUI (LeaderbordId);
} else {
Debug.Log ("Add Score Fail");
}
});
}
}
public void ShowLeader ()
{
Social.ShowLeaderboardUI ();
}
我不确定我是否得到了你想要的。我认为您每次 post 得分时都试图打开排行榜。我会更改您的脚本以使其更易于理解。
当您使用 Google Play 服务插件时,您需要做一些事情才能开始。确保你有这个。在脚本的顶部,您将编写:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
然后您需要将此添加到您的启动函数中:
void Start(){
PlayGamesPlatform.Activate();
}
如果你制作一个函数只是为了显示你的排行榜,那就更容易了,比如你的最后一个函数:
public void ShowLB(){
((PlayGamesPlatform) Social.Active).ShowLeaderboardUI("YOUR_LEADERBOARDS_ID_HERE");
}
那么你的Post()函数就是这样的:
public void Post (){
if (Social.localUser.authenticated) {
Social.ReportScore (5000, LeaderbordId, (bool success) =>
{
if (success) {
ShowLB ();
} else {
Debug.Log ("Add Score Fail");
}
});
}
}
在你的最后一个函数中你可能想要这样做:
public void ShowAchievs(){
Social.ShowAchievementsUI ();
}
否则应该是这样的:
public void ShowLB(){
((PlayGamesPlatform) Social.Active).ShowLeaderboardUI("YOUR_LEADERBOARDS_ID_HERE");
}
但是如果你只是在触发后使用你的 post 功能,比如游戏结束,并使用其他东西来显示你的 LB,那就更容易了。比如点击按钮之类的。
我不知道那是你想要的。
您必须 运行在 编辑器 中运行您的游戏,您需要 运行 在 实际设备中运行您的游戏 或者一个模拟器(有一个 gmail 帐户......这些很少见)
事情是这样的……
打开控制台,然后键入此
adb logcat
或者您可以通过仅过滤来自 unity
的日志来缩小结果范围
adb logcat -s Unity
打开你的游戏,看看控制台如果你得到
ShowAchievementsUI not implemented
或
ShowLeaderboardsUI not implemented
这仅意味着您使用的是默认配置(统一配置)
我建议您将默认值替换为 google play 的
The default configuration needs to be replaced with a custom configuration
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
// enables saving game progress.
.EnableSavedGames()
// registers a callback to handle game invitations received while the game is not running.
.WithInvitationDelegate(<callback method>)
// registers a callback for turn based match notifications received while the
// game is not running.
.WithMatchDelegate(<callback method>)
.Build();
PlayGamesPlatform.InitializeInstance(config);
// recommended for debugging:
PlayGamesPlatform.DebugLogEnabled = true;
// Activate the Google Play Games platform
PlayGamesPlatform.Activate();
任何错误现在都将显示在控制台中,实际上您不需要所有的错误,您只需要这些
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
用于记录错误,
然后你就可以验证了:)
如果你打开它突然崩溃,这意味着你的清单文件有问题
如果您使用旧版本,您可能需要这个(如果您使用的是最新版本,它会自动添加)
<application ... >
...
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
....
</application>
确保通过 SDK 管理器将 google 播放服务 更新到最新版本,这样可以避免不愉快 情况
干杯。
我正在使用 Unity 5 为 Android 构建游戏,我已经导入了这个 plugin
但是它不能正常工作我按照这个 tutorial :
当我尝试 post 或显示排行榜时,它没有显示任何内容。它甚至没有抛出任何错误。登录和注销正常 properly.Please 帮助
代码:
public void LogIn ()
{
Social.localUser.Authenticate ((bool success) =>
{
if (success) {
Debug.Log ("Login Sucess");
} else {
Debug.Log ("Login failed");
}
});
}
public void LogOut ()
{
PlayGamesPlatform.Instance.SignOut ();
}
public void Post ()
{
if (Social.localUser.authenticated) {
Social.ReportScore (5000, LeaderbordId, (bool success) =>
{
if (success) {
((PlayGamesPlatform)Social.Active).ShowLeaderboardUI (LeaderbordId);
} else {
Debug.Log ("Add Score Fail");
}
});
}
}
public void ShowLeader ()
{
Social.ShowLeaderboardUI ();
}
我不确定我是否得到了你想要的。我认为您每次 post 得分时都试图打开排行榜。我会更改您的脚本以使其更易于理解。
当您使用 Google Play 服务插件时,您需要做一些事情才能开始。确保你有这个。在脚本的顶部,您将编写:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
然后您需要将此添加到您的启动函数中:
void Start(){
PlayGamesPlatform.Activate();
}
如果你制作一个函数只是为了显示你的排行榜,那就更容易了,比如你的最后一个函数:
public void ShowLB(){
((PlayGamesPlatform) Social.Active).ShowLeaderboardUI("YOUR_LEADERBOARDS_ID_HERE");
}
那么你的Post()函数就是这样的:
public void Post (){
if (Social.localUser.authenticated) {
Social.ReportScore (5000, LeaderbordId, (bool success) =>
{
if (success) {
ShowLB ();
} else {
Debug.Log ("Add Score Fail");
}
});
}
}
在你的最后一个函数中你可能想要这样做:
public void ShowAchievs(){
Social.ShowAchievementsUI ();
}
否则应该是这样的:
public void ShowLB(){
((PlayGamesPlatform) Social.Active).ShowLeaderboardUI("YOUR_LEADERBOARDS_ID_HERE");
}
但是如果你只是在触发后使用你的 post 功能,比如游戏结束,并使用其他东西来显示你的 LB,那就更容易了。比如点击按钮之类的。
我不知道那是你想要的。
您必须 运行在 编辑器 中运行您的游戏,您需要 运行 在 实际设备中运行您的游戏 或者一个模拟器(有一个 gmail 帐户......这些很少见)
事情是这样的…… 打开控制台,然后键入此
adb logcat
或者您可以通过仅过滤来自 unity
的日志来缩小结果范围adb logcat -s Unity
打开你的游戏,看看控制台如果你得到
ShowAchievementsUI not implemented
或
ShowLeaderboardsUI not implemented
这仅意味着您使用的是默认配置(统一配置) 我建议您将默认值替换为 google play 的
The default configuration needs to be replaced with a custom configuration
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
// enables saving game progress.
.EnableSavedGames()
// registers a callback to handle game invitations received while the game is not running.
.WithInvitationDelegate(<callback method>)
// registers a callback for turn based match notifications received while the
// game is not running.
.WithMatchDelegate(<callback method>)
.Build();
PlayGamesPlatform.InitializeInstance(config);
// recommended for debugging:
PlayGamesPlatform.DebugLogEnabled = true;
// Activate the Google Play Games platform
PlayGamesPlatform.Activate();
任何错误现在都将显示在控制台中,实际上您不需要所有的错误,您只需要这些
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
用于记录错误, 然后你就可以验证了:)
如果你打开它突然崩溃,这意味着你的清单文件有问题
如果您使用旧版本,您可能需要这个(如果您使用的是最新版本,它会自动添加)
<application ... >
...
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
....
</application>
确保通过 SDK 管理器将 google 播放服务 更新到最新版本,这样可以避免不愉快 情况
干杯。