質問編集履歴

1 書式の改善

退会済みユーザー

退会済みユーザー

2015/04/24 12:39  投稿

unity gamecenter スコアをElpsed time -to the hundredth of a secondの形式で送りたい。
GameCenterにelpsed timeのフォーマットでスコアを送りたい&loadしたい
現在、unityで作ったゲームにiOSのGameCenterを実装しています。
実機でデバッグしてみたところ、認証成功してはいるのですが
ちゃんとスコアをloadできずスコアを0のまま送ってしまっています。
iTunesConnectの方では、スコアのフォーマットタイプは
Elpsed Time -To the Hundredth of a Second-で、
スクリプトにどう書けばよいか把握できておりません。
どなたか詳しい方ぜひともなんとかご助言をお願いします!!!
Test_ScoreReport.cs
```lang-<c#>
using UnityEngine;
using System.Collections;
public class Test_ScoreReport : MonoBehaviour {
public int score1;
void Start(){
ReportScore(score1, "leaderboardID"); // iTunes Connectで設定したleaderbordIDを入れる。
}
void ReportScore (long score, string leaderboardID) {
Debug.Log ("Reporting score " + score + " on leaderboard " + leaderboardID);
Social.ReportScore (score, leaderboardID, success => {
Debug.Log(success ? "スコア報告は成功しました。" : "スコア報告は失敗しました。");
});
}
}
```
↑おそらくはここらへんをelpsed timeに合わせた形に変更しなければなりません。
また、元のスコアを僕の場合はfinishcontrollerで最新のスコアをcurrentRecord、今までで一番良いスコアをhistoricalRecordとして表しています。
FinishController.js
```lang-<javascript>
#pragma strict
import UnityEngine.UI;
//import NendUnityPlugin.AD;
var currentRecord : UI.Text;
var historicalRecord : UI.Text;
var newRecord : UI.Image;
private var prefix : String = "finish_";
// AudioClip.
var seOnRestart : AudioClip;
var seOnFanfare : AudioClip;
function Awake(){
newRecord.enabled = false;
}
function Start(){
currentRecord.text = secondsToTimeFormat(StopWatch.referenceCurrentRecord);
historicalRecord.text = "Best Record " + secondsToTimeFormat(StopWatch.referenceHistoricalRecord);
if(StopWatch.isNewRecord){
newRecord.enabled = true;
// 新記録の場合のファンファーレを鳴らす
audio.PlayOneShot(seOnFanfare);
}else{
if((PlayerPrefs.GetInt(prefix + "PlayCount",0) == 2 || PlayerPrefs.GetInt(prefix + "PlayCount",0) % 10 == 0) && PlayerPrefs.GetString(prefix + "isReview","true") == "true"){
StartCoroutine("recommendReview");
}else{
if(Mathf.Floor(Random.Range(0,2)) == 0){
//interstecial
#if UNITY_IPHONE
NendAdInterstitial.Instance.Load(Define.nendiOSApiKey,Define.nendiOSSpotId);
#elif UNITY_ANDROID
NendAdInterstitial.Instance.Load(Define.nendAndroidApiKey,Define.nendAndroidSpotId);
#endif
StartCoroutine("coroutineInterstitialShow");
}
}
}
PlayerPrefs.SetInt(prefix + "PlayCount",PlayerPrefs.GetInt(prefix + "PlayCount",0) + 1);
}
function onClickRestart(){
StartCoroutine("coroutineRestart");
}
function coroutineInterstitialShow(){
yield WaitForSeconds(2.0);
NendAdInterstitial.Instance.Show();
}
function coroutineRestart(){
audio.Stop();
audio.PlayOneShot(seOnRestart);
yield WaitForSeconds(1.3);
Application.LoadLevel("S1_Main");
}
function secondsToTimeFormat(seconds : float){
var mins : int = seconds / 60;
var t : float = seconds % 60.0;
var sens : int = t / 1.0;
t = t % 1.0;
var msens : int = t / 0.01;
return mins.ToString() + ":" + sens.ToString("D2") + ":" + msens.ToString("D2");
}
```
↑のおそらくはfunction Startのところと、function secondsToTimeFormatが関係しているかと思います。
直接的な解決方法でなくともよいのでご助言お願いいたします!
  • C#

    15567 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • JavaScript

    36527 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • iOS

    7192 questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Unity

    11249 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る