私は浮動小数点数を使って、プレイヤーがゲームを終了する時間(秒)を計算して表示しています。Unity3dのタイマーとして大きい浮動小数点値を使用する
私のゲームでは時々速くなるので、時間の値を大きくする必要があります。
は、ここに私の問題だ:私はアップデートで次のコードを使用します
Update() {
timeleft -= Time.deltaTime;
Debug.Log (timeleft);
counter.text = "Time Left = " +timeleft.ToString("F0");
}
ゲーム開始時には、残り時間値(秒で年間約32万円)本当に高い数値に設定されています。
時間の低下率はゲームによって異なるため、time.deltaTimeのフロートを使用しています。
Unityはこの大きな初期値を3.2E + 07として保存します。 すぐに、私のcounter.textは正常に機能しません。次の科学的表記の値が現れるまで待つだけです。だから、タイマーのテキストが詰まっているように見えますが、バックでは実際にはまだカウントダウンしています。私はここで理にかなっていると思います。疑いを避けるために、カウンターディスプレイは100万以下の値で正常に動作します。
この問題を解決するにはどうすればよいですか? timeleft.ToStringを変換して正しい値を表示するにはどうすればよいですか?
以下のコメントによれば、誰かが代わりに小数点の使用を提案しました。それは浮動小数点を必要とするので、deltaTimeでは動作しません。または、小数点の使用方法や使い方を誤解しています。
新しいintを作成してfloatでMathf.RoundToIntを使用しようとしましたが、それは機能しません。タイマーは大きな値にとどまっています。
floatの代わりに[decimal](https://stackoverflow.com/q/618535/578411)を使用しますか? – rene
私は同じシナリオを試みましたが、私は自分のシーンで値をよく見ることができます。しかし、検査官には1e + 07と書かれています。@reneが言ったように浮動小数点を10進数に変更しました。それはうまくいく。 – Thalthanas
[科学的表記なしの2倍から文字列への変換]の可能な複製(https://stackoverflow.com/questions/1546113/double-to-string-conversion-without-scientific-notation) – FCin