2014年10月08日

iTunes 対応 (8) | 今回こそアチーブメントの実装!

さて、今度こそほんとーにアチーブメントを実装しましょう。
ネイティブプラグインはギブアップなんで、Unity の "Social API" 使いますよー。


アチーブメントの実装 | ディスクリプションのロード編
じゃ、ユーザー認証はできたんで、アチーブメントの情報から読み込んでみましょうね。
今回は、Unityの公式リファレンスを参考にして、こんな感じにコードを書いてみましたよ。
Screen Shot 2014-10-08 at 1.22.18 PM.png
まずは小手調べって感じで、登録されてるアチーブメントと、進捗を報告した事があるアチーブメントのリストの取得から。

前に使ったユーザー認証が終わったら、アチーブメントの情報を取り出してます。
Screen Shot 2014-10-08 at 1.25.32 PM.png
65行目でチェック、認証出来たら68行目でロード

ひとまず、テストなんで、取って来たアチーブメントの配列数をデバッグ表示で表示。
Screen Shot 2014-10-08 at 1.23.43 PM.png
処理後に実行されるコールバック達

の予定だけど、XCodeではどうかな〜....
ビルドは通ったけど....

あれっ?
ん〜、またなんか勘違いしてたのかな?
デバッグログによると、今の状態では、アチーブメント、拾えてないですねぇ〜。
Log2.png
LoadAchievements の方は0を予想してたんですけど、
LoadAchievementDescriptions は進捗が無くても、GameCenter に登録されてて、公開になってるるアチーブメントは全部返ってくるのかと思ってたのに...

ま、じゃ、ちょっと ShowAchievementsUI を使って見てみましょうかね?



アチーブメントの実装 | Unityが用意したデフォルト呼び出しを利用、の為の準備から
さて、さっきの ShowAchievementsUI を使ってみたいと思いますが、その為に準備が必要ですね!
そう、トリガーとなるボタン!
まず、その準備から行きましょうかね。
何がいいかなぁ〜....

あ、これかな?
ここのチュートリアルを参考に、ボタンをタイトル画面に置きましょうかね。
おっと、しまった!これ、Unity4.6の機能の紹介ですね〜。

ちょっとまだアップデートしたくないんだな〜。(あんまり信用してない。)
しょうがないんで、独自のボタンを簡単に作りますかね。
昔からの機能を使ったボタンって....この方のチュートリアルが簡単そうなんで、これにしましょうかね。

さて、このチュートリアル動画に従って、こんな簡単なスクリプトを書いてみました。
Screen Shot 2014-10-07 at 7.46.58 PM.png
内容は、2番目に紹介されてた、独自のテクスチャをボタンに適用する形です。
20行目でテクスチャとサイズを設定して表示してもらって、入力があったら、22行目で、GameCenterPluginクラスに頼んで、アチーブメントをiOSのデフォルトフォーマットで表示してもらう形です。

GameCenterPlugin はこんな感じ。
Social API を使った、簡単な1行コードですね!手抜きだなぁ〜^^:
Screen Shot 2014-10-08 at 1.31.35 PM.png

さらに、新規のGameObject(Btn_Achievement)を作って、それにコンポーネントとして接続しただけ。
Screen Shot 2014-10-07 at 7.40.17 PM.png

さて、テクスチャを使うんで、またアイコン用のテクスチャを探して来ましたよ。
今回は、Unityのアセットストアにはいい感じのが見当たらなかったんで、フリー素材を使わせてくれる、こちらのwebサイトにお世話になってみました。
ちょっと加工してますが、加工後のテクスチャはこんな感じです。
Icon_Achievement_120x120.png
しまった、完全に白だから、ここでは見えてないですねw

じゃ、これもデバイスじゃないと確認できない機能なんで、さっそくiOSビルドを作って試してみましょうかね?

ん〜。表示はされるんですが、中身ないですねぇ。こっちもアチーブしたやつだけ表示されるのかな?

あと、ちょっとバグもあって、このボタンを押すと、ゲームも始まっちゃいますね。
ま、ゲーム開始のトリガーは”タッチがあったら”、って取り方なんで、当然ですね。
ちょっと、そっちから修正してみましょうかね。


タイトル画面の修正から...
え〜っと、いろいろ考えたんですが、単純にスタートボタンを追加する事にしました。
ホントは、ボタンと、ボタン以外のスクリーン全体のタッチ、ってしたかったんだけど、なんか、このGUIのコリジョン、よく分かんなくて....
やっぱり4.6にアップデート、とっととした方がいいのかなぁ〜。

さて、で、ボタン追加しました。
Screen Shot 2014-10-08 at 1.44.32 PM.png
この修正に伴って、さっきのアチーブメントのボタンも含めて、GameManager に持って来ちゃいました。
このクラスでは、OnGUI 使ってなかったんで、OnGUI追加して、ステップ見ながら表示と判定をやってます。
こんな感じで。
Screen Shot 2014-10-08 at 1.47.13 PM.png
233行目がアチーブメントのボタン表示。235行目で、押されたときの処理。
242行目が、スタートボタンの表示。244行目で、追加したスタート初期化ステップ"GAME_INIT"へ。

改めてみると、いろいろやばそうですね。まだ。2つ同時に押されたらヤバそう。とか。
ま、今はそっとしておきましょうw


GUIボタンのサイズ調整
さて、多分共通の問題なんだと思うんだけど、標準のGUIの問題は、レゾリューションによって、サイズが変わっちゃうんですが、ここにこんな解決方法が書いてあって、使ってみたんだけど、正直サイズはうまくいっても、表示位置まで解決してくれないんですよね。
なんで、真ん中あたりに表示したいスタートボタンは、下の239〜241行目みたいな感じで。
Screen Shot 2014-10-08 at 1.52.13 PM.png
iPhone5のレゾリューションを基準に位置調整して、その位置に実際のスクリーンサイズで補正("scale"変数ね)をかけて表示する様にしてみました。
ま、ちょっと他のデバイスでテストしてませんがね。Editorのレゾリューション変える分には動いてましたが...


それはいいから、アチーブメントの動作は?
なんかまた準備ばっかりで長くなっちゃった....

じゃ、実際のデバイスで試してみましょうかね!
....ん〜。書いてあった様に、別のViewWindowは出たっけど、中身空っぽで、最初と一緒ですなぁ〜。


なんだろう?

        にほんブログ村 ゲームブログ×PlayNCBlogへ
 初めてみました。よかったらクリックお願いね ♪

アチーブメントと言えばまず思い浮かぶのはXBoxだよね!
posted by やまけん at 14:10| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: