🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1683閲覧

Unity オンライン ランキング 時間Typeで実装したい

gongo

総合スコア1

C#

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/12/06 05:05

前提・実現したいこと

UnityでオンラインTimeランキングを下記サイトを見て実装しようとしています。
https://blog.naichilab.com/entry/webgl-simple-ranking

発生している問題・エラーメッセージ

ランキングの時間Typeでランキングさせたいのですが、時間の動かし方が分かりません。

該当のソースコード

サイトで下記コードをゲームクリア画面に移行する時に当てはめたら完了となっていますが、

var millsec = 123456;
var timeScore = new System.TimeSpan (0, 0, 0, 0, millsec);
naichilab.RankingLoader.Instance.SendScoreAndShowRanking (timeScore);

時間が固定で全く動いていません。

試したこと

上記コードの上から二行をコメントにして、
naichilab.RankingLoader.Instance.SendScoreAndShowRanking (timeScore);
の(timeScore)の部分を私シーンのtimerとして使っている変数を当てはめ(timer);としたら動いて記録ができました。

記録ができましたが記録ができるのは時間ではなくて数字として記録されてしまいます。
RankingInfoの時間typeで動かすと「スコアの方が違います。」とエラーが出て、
数字typeでは動かすと記録できます。
ですが、数字typeですので例えば1分30秒の記録になると 時間なら1:30になりますが、
数字なら90.0000と記載されてしまいます。

上から二行を触ってみましたが、固定の数字が変わるだけでtimerとして動いてくれません。
上から二行に私シーンのtimerとして使っている変数を当てはめてもエラーになってしまいます。

Unityを始めてまだ二か月もたっていない知識不足物です。
この問題で2週間解決できていないので質問させてもらいました。

上記のTimeの動かし方分かる方がいましたら、上記コードに+記載して教えて頂けたら助かります。

どうか宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

参照されたページの物はあくまで「スコア(時間)をランキングする」だけのものでスコアのカウント等は自分で行わなければなりません。
ランキング対象のスコアとして送信する時に

C#

1naichilab.RankingLoader.Instance.SendScoreAndShowRanking(timeScore);

と自分でカウントした時間をTimeSpan型に変換して引数として渡すだけでしょう。
TimeSpan型に関してはこちらにあるように作成してください。

そして、ランキングにどのように表示するかについてはインスペクタにあるCustomFormatに設定します。
どのように設定するかは参照されたページに書いてあります。
90.0000と記載されたときにどのように設定されていたのか分からないので適切な設定としてみてくださいとしか言いようがありません。

投稿2020/12/06 09:15

YAmaGNZ

総合スコア10469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gongo

2020/12/06 10:52

早急な回答ありがとうございます! 回答頂けた事、感謝致します。 「自分でカウントした時間をTimeSpan型に変換して引数として渡す」 貼り付けて頂いたTimeSpan型の例文を見させて頂きましたが、流れが知識不足ではっきり分からなかったのでしっかり確認し、噛み砕いて頑張ります。 後、少し確認したいのですが下記のpublic static float timer;にテキストを貼って時間計測、クリア時止めるようにしています。 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using NCMB; public class Tone : MonoBehaviour { Text timeText; public static float timer; Transform myTransform; bool isCalledOnce = false; // Start is called before the first frame update void Start() { timeText = this.GetComponent<Text>(); timer = 0.0f; myTransform = transform; } // Update is called once per frame void Update() { if(myTransform.childCount > 0) { timer += Time.deltaTime; int minutes = Mathf.FloorToInt(timer / 60F); int seconds = Mathf.FloorToInt(timer - minutes * 60); int mseconds = Mathf.FloorToInt((timer - minutes * 60 - seconds) * 10); string niceTime = string.Format("{0:00}:{1:00}.{2:0}", minutes, seconds, mseconds); timeText.text = niceTime; } if (!isCalledOnce) { if(myTransform.childCount == 0) { isCalledOnce = true; // Type == Time の場合 var millisec = 123456; var timeScore = new System.TimeSpan(0, 0, 0, 0, millisec); naichilab.RankingLoader.Instance.SendScoreAndShowRanking (timeScore); } } } } できれば教えて頂きたいのですが、この時間計測で使っている"timer"をTimeSpan型に変換して、 引数を下記の()内を全て削除して、 var timeScore = new System.TimeSpan(0, 0, 0, 0, millisec); var timeScore = new System.TimeSpan(引数); とすればよろしいでしょうか? こんな事も分からないのか?と思われると思いますが、できれば教えて頂けたら有難いです。 とりあえず自分自身でも調べて頑張ってみます。 もし又回答頂けるようでしたら、よろしくお願い致します。
YAmaGNZ

2020/12/06 11:02

私が提示したページを見ていただければ「new System.TimeSpan」とする時に何種類かの引数があることが分かるかと思います。 引数が5個の場合はTimeSpan (int days, int hours, int minutes, int seconds, int milliseconds)と 日数,時間,分,秒,ミリ秒と指定します。 それぞれは貴方が提示したソースにて求めているので、分かるかと思います。
gongo

2020/12/07 10:17

YAmaGNZ様 昨日最後のコメント助言で解決する事ができました! YAmaGNZ様に回答頂けてなかったら未だに全く解決できず進んでなかったです。 本当に感謝しきれないほど感謝致します。 有難うございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問