1. 程式人生 > >unity中接入Google Play SDK

unity中接入Google Play SDK

參考:

Google Play Games plugin for Unity:

Setting Up Google Play Games Services:

準備
確保你的Android SDK中包含以下內容:
•Google Play Services
•Android Support Library
•Local Maven repository for Support Libraries (Also known as Android Support Repository)
•Google Repository
•Android 6.0 (API 23) (this does not affect the min SDK version).

使用Android SDK Manager 來確認你的SDK內容


如果下載過慢,可以嘗試使用以下站點:


匯入SDK
1.將GooglePlayGamesPlugin-0.9.42.unitypackage檔案匯入到你的專案中
匯入專案後請務必至少修改一次包名(Package Name),確保你已看到此介面:

*如果已經是正式包名,則新增任意字元,Resolving 結束後再改回正式包名,
  正式包名必須與你在後臺填寫的包名一致。

*如果Resolving結束後彈出以下提示,請選擇NO


*確保Resolving結束後Plugins > Android目錄下存在此檔案 gpgs-plugin-support-0.9.42

2.匯入後選單欄將出現SDK選項,選擇Window > Google Play Games > Setup > Android Setup
面板中 

directory to save constants以及Constants class name使用預設值即可
Resources Definition 在後臺中:



 你還需要從後臺生成Client ID 並填入。

使用

這裡我們只使用到了排行榜功能:

1.AndroidManifest檔案中需加入以下程式碼

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

2.實現登入以及排行榜的方法,包括登入、登出、上傳分數以及顯示排行榜:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using GooglePlayGames;
using UnityEngine.SocialPlatforms;

/// <summary>
/// Google play manager.
/// create by liufeng on 18-01-11
/// </summary>
public static class GooglePlayManager {

    public delegate void GPDelegate(bool success,string uname);

    static GPDelegate authenticatingCallback = null;

	/// <summary>
    /// 初始化SDK
    /// </summary>
	public static void Init () {
        PlayGamesPlatform.Activate();
	}

    /// <summary>
    /// 是否登入
    /// </summary>
    /// <returns>The authenticated.</returns>
    public static bool Authenticated(){
        return Social.localUser.authenticated;
    }
	
    /// <summary>
    /// 登入
    /// </summary>
    /// <returns>The authenticating.</returns>
    /// <param name="cb">回撥</param>
    public static void Authenticating(GPDelegate cb = null){
        authenticatingCallback = cb;
        Social.localUser.Authenticate((bool success) =>
        {
            if (success)
            {
                Debug.Log("Authentication success : " + Social.localUser.userName);
            }
            else
            {
                Debug.Log("Authentication failed");
            }
            if (cb != null) cb(success, Social.localUser.userName);
        });
    }

    /// <summary>
    /// 登出
    /// </summary>
    public static void SignOut(){
        ((PlayGamesPlatform)Social.Active).SignOut();
    }


    /// <summary>
    /// 上傳分數
    /// </summary>
    /// <param name="scores">分數.</param>
    /// <param name="lbid">排行榜id.</param>
    public static void PostScore(int scores,string lbid){
        if(!Authenticated()){
            Debug.Log("沒有登入");
            return;
        }

        Social.ReportScore(scores,lbid,  (bool success) => {
            // handle success or failure
            Debug.Log("post score : " + success);
        });

    }

    /// <summary>
    /// 顯示排行榜
    /// </summary>
    /// <param name="lbid">排行榜id,傳空字串則顯示全部排行榜</param>
    public static void ShowLeaderboard(string lbid = ""){
        if (!Authenticated())
        {
            Debug.Log("沒有登入");
            return;
        }
        if(lbid == ""){
            Social.ShowLeaderboardUI(); 
        }else{
            PlayGamesPlatform.Instance.ShowLeaderboardUI(lbid);
        }

    }
}

測試

GooglePlayTest為測試方法,將此類放到任意場景中,可快速測試SDK的各項功能是否正確

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GooglePlayTest : MonoBehaviour {

    const int height = 70;
    const int width = 200;

	// Use this for initialization
	void Start () {
        GooglePlayManager.Init();
	}
	
    int high;
    void OnGUI()
    {
        high = 10;

        if (CreateBtn("登入"))
        {
            GooglePlayManager.Authenticating(AuthenticatingCallBack);
        }

        if (CreateBtn("登出"))
        {
            GooglePlayManager.SignOut();
        }

        if (CreateBtn("上傳分數"))
        {
            GooglePlayManager.PostScore(123,"CgkImoOim_EUEAIQAQ");
        }

        if (CreateBtn("顯示排行榜"))
        {
            GooglePlayManager.ShowLeaderboard("CgkImoOim_EUEAIQAQ");
        }
    }


    public bool CreateBtn(string btnname)
    {
        bool b = GUI.Button(new Rect(Screen.width / 2 - width / 2, high, width, height), btnname);
        high += height + 5;
        return b;
    }

    public void AuthenticatingCallBack(bool success, string uname)
    {
        if(success){
            NGUIDebug.Log("Authenticating success : " + uname);
            Debug.Log("Authenticating success : " + uname);
        }else{
            NGUIDebug.Log("Authenticating failed  " );
            Debug.Log("Authenticating failed  " );
        }

    }

}

最後我們需要一臺可以連線google網站的手機,並確認已安裝google play服務。

這裡可以在應用商店中搜索"google框架安裝器",大部分商店中都有,安裝後就可以使用google play服務了。

相關推薦

unity接入Google Play SDK

參考:Google Play Games plugin for Unity: Setting Up Google Play Games Services: 準備 確保你的Android SDK中包含以下內容:•Google Play Services•Android

Unity與Android】02-在Unity匯出的Android工程接入Google AdMob廣告

我在上一篇文章 【Unity與Android】01-Unity與Android互動通訊的簡易實現) 中介紹了Unity與Android通訊的基本方法。 這一篇開始進入應用階段,這次要介紹的是如何在Android工程中接入Google的AdMob。   關於AdMob A

如何在Android模擬器安裝Google Play Service

在android開發app過程中,app依賴Google Play Service(如Android Google Map V2),因此需要在模擬器中安裝Google Play Service。Google Play Service是包含在Google Market中,android模擬器 avd建

接入google+登入SDK提示google-services.json is missing

接入google+登入SDK時下載官方的demo,然後一堆問題,於是把該安裝的最新的庫都安裝了。 但仍然有如下錯誤。 Information:Gradle tasks [:app:generateDebugSources, :app:mockableAndr

Unity接入高德地圖 UI疊加與訊息處理

程式中有兩個UIView,高德地圖的View在下層,Unity的View在上層,當滑鼠點選到Unity中的UI或其他物件時,Unity截獲點選訊息,否則高德地圖處理點選訊息。 一:Unity設定NGUI Camera Clear Flags 設定為:Solid Color

Google登入接入play-games-plugin-for-unity

Google後臺配置 進入google後臺:https://play.google.com/apps/publish/?hl=zh&account=5458629459868388661#GameListPlace 新版外掛下載:https://github.com/playgame

Unity 接入應用寶 SDK 即 YSDK 過程遇到的問題記錄 20180302

遇到的問題先記錄,解決了再更新。1、按照官方步驟接好 SDK,打包初始化是報錯,缺失 ysdk_hackdex.jar     解決方法:將 YSDK_Android_1.3.8_907.jar 解壓,把 assets 目錄裡的檔案複製到 Unity 的 Plugins/An

Unitysdk接入的學習筆記--Plugins

跟著新總學習了sdk的接入,心得一點點整理下哈。 1、在Eclipse新建一個工程,然後將unity的自帶lib,data/playbackEngines/adnroidplayer/release/bin/classes.jar(5.0版本的檔案路徑)拷貝到工程的lib下

教你高速高效接入SDK——Unity統一接入渠道SDK(Android篇)

方法名 nco 簡單 sdk ui主線程 unit onpause 提示 schema U8SDK的設計之初,就是為了可以支持各種遊戲引擎開發的遊戲,而不不過Android的原生平臺。眼下一大半的手遊,都是採用Unity3D和Cocos2dx開發,那麽這裏,我們就先來一

關於在將暴風SDK倒入unity運行程序出現報錯問題

分享 報錯 demo 它的 src 錯誤 .cn 發現 我們 我們將暴風SDK導入我們已經做好的項目中時,發現運行發生報錯問題。然後我在它的Demo示例中運行也發現錯誤。然後根據它的報錯我找到問題。 然後我發現。我的IntergrateInputManger中的Unity

unity接入安卓SDK,與安卓相互通訊

.接SDK是個什麼樣的活計? SDK的工作流程: 1. 從unity端出發,向安卓發起一系列的請求(unity call android)。 2. 安卓端收到unity端呼叫,然後在具體呼叫SDK的一系列介面(android內部呼叫) 3. SDK伺服器處理之後得到結果,再返回給安卓(網路通訊) 4

很多人在Google Play商店購買或下載APP時出現問題,例如在你新安裝的系統恢復APP或想要安裝心願單的APP時,Play商店出現不能載入等錯誤,這實在是太煩人了。 所以,我通過搜尋,把可

error 491 問題說明: downloads and updates impossible. (不能下載或更新) 解決方案: 進入您的裝置設定,刪除Google賬戶的所有內容。重啟您的Android裝置並重新新增G

Android模擬器Android 4.1 API Level 16的映象安裝Google Play Services服務

最近做一些國外的Android小APP開發,遇到了適配Android版本的問題。但是開發出來的APP一般都習慣上選擇最小相容版本16,也就是Android4.1。但是用到google地圖等api的時候,在android 5.0(API 21)之後總是沒有問題,但

Unity專案接入Android的Admob Native(原生視訊廣告) SDK

Admob的Native(原生)廣告SDK有Unity版本,但只支援圖文廣告,不支援視訊,為了在Native中加入視訊,只好來接Android的SDK。實現了Unity專案匯出Android Studio工程,AS接入Android SDK後匯出Apk過程。 對於Andro

Google Play支付接入流程

先吃兩顆定心丸 有兩件事一定要知道: Google 支付很簡單,一點兒都不難,所以不要頭疼,不好害怕,不要壓力山大。 當你寫好程式碼完成接入準備測試 Google 支付時,只要順利彈出了 Google 支付相關的 UI 介面,哪怕是報錯提示資訊,千萬不要懷疑

Unity Android SDK配置

注意: 我這裡設定的SDK路徑是我裝AndroidStudio的SDK路徑 為了方便大家使用,我將我平時用的SDK打包分享給大家,希望對大家有所幫助: SDK百度雲盤地址:http://pan.baidu.com/s/1eR3umC6

Unity的Animator使用animator.Play()不能重複播放同一個Animatoin的解決方案

使用如下程式碼,只傳1個動畫名引數,動畫只會播放一次: public Animator Animtor; Animtor.Play("anim_1"); ///////////////////////////////////////////////////////////////////

Google Play支付接入(in-app Billing)

Google Play in-app Billing的接入過程需要閱讀接入文件。官方的接入文件地址為: (1)Google Play開發者控制檯 Google Play開發者控制檯是管理應用,配置商品和釋出的後臺。參考地址為: Google Play的幫助文件地

Android開發的第三方支付SDK接入與使用(支付寶+微信支付+銀聯)

支付寶微信銀行卡支付SDK接入 支付寶支付: 一.  繫結前提: 我們自己要和支付寶簽約(商戶簽約).-->運營完成 祕鑰配置-->協助運營完成祕鑰的配置(公鑰互換),可能程式設計師會參與 整合支付寶-->必須是程式設計師去做二.  繫結步驟 整合呼叫支付

接入高德 SDK 遇到的問題 01:語音導航科大訊飛線上語音合成次數限制

需求:採用高德導航SDK實現路線導航,並且實現語音播報導航 問題:高德導航語音合成開發指南中,建議採用的科大訊飛線上語音合成存在次數限制,遠遠達不到生產環境的需求量 解決:採用百度離線上語音識別 Android SDK 一、科大訊飛語音合成使用次數有限