[Roll-a-Ball]経過時間を表示するUIについて | Unity Forum | Tech Stadium Forum

[Roll-a-Ball]経過時間を表...
 
通知
すべてクリア

[Roll-a-Ball]経過時間を表示するUIについて  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
16/03/2021 10:46 pm  
経過時間を表示するUIで、
[SerializeField] private TextMeshProUGUI timer;
[SerializeField] private int minute;
[SerializeField] private float seconds;timer.text = string.Format("{0:00}:{1:00}", minute, (int)seconds );
上記のような書き方で正常に時間を表示できるのですが、
 

timer.text = "{0:00}:{1:00}", minute, (int)seconds;
こちらではエラーとなります。
string = “string”,int,int;
となっているので、可能だと思ったのですが、何が問題なのでしょうか?
 

また、こちらでは正常に表示できますが、
timer.text = minute.Tostring("00") + ":" +((int)seconds).Tostring("00");
現行の「string.Format」と「型.Tostring」の使い分けを教えていただきたいです。

引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
16/03/2021 10:50 pm  
①について
"{0:00}:{1:00}", minute, (int)seconds;
のような書き方ですと、関数を使わずにカンマ「 , 」が使われているのが問題です。
正しくはstring.format( String , Object)と言った書き方をするので、string.Format関数を使うようにしましょう。
 
②について
ToString()はint型やfloat型をstring型に変更する関数です。桁数などを指定できます。
それに対してstring.Format()は様々な書式を指定してstring型に変換してくれる関数です。
例えばですが
//21%を返す
string.Format("{0:P}", 0.21);
上のように記述すると少数を%にして返してくれます。その他にも文字列の結合なども行えます。string.Formatのほうができる幅が広いと考えるとわかりやすいですね。
string.Formatの使い方については以下を参考にしてください。
https://www.sejuku.net/blog/43140

返信引用
共有:
タイトルとURLをコピーしました