きょこみのーと

技術に関係ないほうのブログ

Cocos2d-xでGooglePlayGameServiceを呼び出す

導入手順

サンプルコードとライブラリはこちら

https://github.com/playgameservices/android-samples

通常のAndroidでの導入手順はこちらのサイトがわかりやすいのでこっち読んでくださいw

http://qiita.com/okano-pankaku@github/items/93b928581534040b167a

Cocos2d-xで実装する際に、1点だけ異なる点があります。

BaseGameUtilsの代わりにCocos2d-x用に私が作ったライブラリをimportしてもらえればOKです。

https://github.com/kyokomi/NativeBaseGameUtils

あとは、cocos2dx_jni_sampleに入ってるREADME.mdに従って組み込めばcocos2d-xから呼び出すことができます。

 #include "TitleScene.h"
 #include "GameScene.h"
 #include "Java_com_kyokomi_games_nativebasegameutils_GameNativeJniHelper.h"

// 〜省略〜

 // on "init" you need to initialize your instance
 bool TitleScene::init()
 {
     //////////////////////////////
     // 1. super init first
     if ( !Layer::init() )
     {
         return false;
     }
     
     Size visibleSize = Director::getInstance()->getVisibleSize();
     Point origin = Director::getInstance()->getVisibleOrigin();
     
     auto startButton = MenuItemImage::create(
                                            "start_btn.png",
                                            "start_btn_press.png",
                                            CC_CALLBACK_1(TitleScene::menuStartCallback, this));
     
    startButton->setPosition(Point(origin.x + visibleSize.width/2,
                                  origin.y + visibleSize.height/2));
 
     auto rankingButton = MenuItemImage::create(
                                              "ranking_btn.png",
                                              "ranking_btn_press.png",
                                              CC_CALLBACK_1(TitleScene::menuRankingCallback, this));
     
    rankingButton->setPosition(Point(origin.x + visibleSize.width/2 ,
                                    origin.y + visibleSize.height/5));
     
     // create menu, it's an autorelease object
     auto menu = Menu::create(startButton, rankingButton, NULL);
     menu->setPosition(Point::ZERO);
     this->addChild(menu, 1);
     
     
     return true;
 }

// 〜省略〜

void TitleScene::menuRankingCallback(Object* pSender)
 {
    userSignInJNI();
    showAllScoreBoardJNI();
 }

画面はこんな感じ

f:id:kyokomi:20131203101841p:plain

f:id:kyokomi:20131203101848p:plain

f:id:kyokomi:20131203101853p:plain

f:id:kyokomi:20131203101902p:plain

テス垢に登録してないアカウントなので以下のエラーがでました( ^ω^)

f:id:kyokomi:20131203101905p:plain

とりあえず組み込みはOKっぽいです。