やりたいこと
現在、audio sourceとtextオブジェクトを使ってaudio sourceの再生時間の表示を行なっているのですが、終了判定がうまくいきません。具体的に言うと再生し終わったら再生時間が0になってしまいます。 再生したaudio sourceが5秒だとしたら再生終了した後にも5秒と表示させておく方法はありませんか?? また、audio sourceの再生時間に合わせて動く、sliderもつけたいのですが付け方わかる方いらっしゃいますか?
以下のコードが私が現在作っている再生時間を表示するコードです。inspectorでaudio sourceのところにaudiosourceオブジェクト、text boxのところに再生時間を表示したいテキストオブジェクトを格納すれば使えます。
C#
1 2using UnityEngine; 3using UnityEngine.UI; 4using UnityEngine.Events; 5using UnityEngine.EventSystems; 6 7public class AudioSeek : MonoBehaviour 8{ 9 10 public AudioSource AudioSource; 11 public Text textbox; 12 private int a, b,minute, hour, minute2, hour2; 13 14 void Update() 15 { 16 a = (int)AudioSource.time; 17 minute = (int)a / 60; 18 hour = (int)minute / 60; 19 b = (int)AudioSource.clip.length; 20 minute2 = (int)b / 60; 21 hour2 = (int)minute / 60; 22 textbox.text = minute.ToString("d1")+":"+a.ToString("d2")+" / "+minute2.ToString("d1") + ":"+b.ToString("d2"); 23 24 if (!AudioSource.isPlaying) 25 { 26 textbox.text = minute.ToString("d1") + ":" + a.ToString("d2") + " / " + minute2.ToString("d1") + ":" + b.ToString("d2"); 27 } 28 29 } 30} 31
現在、実行時に一度音楽(audio source)が再生されて、その際に再生時間はうまく表示されるということは、bboydaisuke様のご回答より可能になりました。しかし、もう一度、同じaudio sourceを実行中に流しても再生時間は最初から始まらないという問題が発生しています。(「実行時の時に最初に流れたaudio sourceが終了した再生時間」のところで止まったままになってしまう。)
よって、audio sourceの再生時間と連動させたいのですが方法わかる方いらっしゃいましたらご回答の方、何卒よろしくお願いいたします。
また、audio sourceの再生時間と連動しているsliderの作り方についても分かる方いましたら教えていただけますと幸いです。(YouTubeなどの再生バーみたいなものを作りたい)
ここは「質問への追記・修正の依頼」欄なので、ほとんどの方は見ないと思いますよ…