質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

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

Unity

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

Q&A

解決済

2回答

2449閲覧

Unity内で動画の秒数を表示する方法について

mon03

総合スコア5

C#

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

Unity

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

0グッド

0クリップ

投稿2021/08/31 15:50

前提・実現したいこと

Unity内で動画の再生を行う際に現在の動画の時間と動画全体の時間を表示したいと思っています。
その際に00:00という表示の仕方を行いたいと思っています。

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

現在、「videoClip.length」を使って動画全体の長さ、「videoClip.time」を使用して現在の動画の時間を取得しています。
そしてここで取得した数字を
「double length = videoClip.length;
alltime = ((int)length).ToString();」
このようにして小数点以下を切り捨てています。
ここで得られた数字を現在は表示しているのですが00:00という表記にできていません。
ここで得られた数字を60で割ったりして無理やり00:00という表記にしようとも思ったのですが何かもっといい方法があるのではないかと思い質問させていただきます。
また得られた数字の小数点以下の切り捨て方でもっといい方法があればそちらも教えていただきたいです。

該当のソースコード

C#

1using UnityEngine; 2using System.Collections; 3using UnityEngine.UI; 4using System.Collections.Generic; 5using UnityEngine.SceneManagement; 6using System.Linq; 7using System; 8using UnityEngine.EventSystems; 9using System.IO; 10using UnityEngine.Video; 11 12public class video : MonoBehaviour 13{ 14 public VideoPlayer videoClip; 15 public GameObject screen; 16 public Image startbutton; 17 double time; 18 string alltime; 19 string nowtime; 20 [SerializeField] 21 public Text alltimetext; 22 [SerializeField] 23 public Text nowtimetext; 24 //public VideoPlayer mPlayer; 25 // Start is called before the first frame update 26 void Start() 27 { 28 //var videoPlayer = screen.AddComponent<VideoPlayer>(); 29 videoClip.source = VideoSource.VideoClip; 30 //videoClip.clip = videoClip; 31 double length = videoClip.length; 32 alltime = ((int)length).ToString(); 33 alltimetext.text = alltime; 34 //Debug.Log(length); 35 36 } 37 38 // Update is called once per frame 39 void Update() 40 { 41 time = videoClip.time; 42 nowtime = ((int)time).ToString(); 43 nowtimetext.text = nowtime; 44 //Debug.Log(nowtime); 45 } 46 public void VPControl() 47 { 48 var videoPlayer = GetComponent<VideoPlayer>(); 49 50 if (!videoPlayer.isPlaying)// ボタンを押した時の処理 51 { 52 videoPlayer.Play(); // 動画を再生する。 53 Texture2D texture = Resources.Load("images/nekonekodouga/start1") as Texture2D; 54 startbutton.sprite = Sprite.Create(texture, 55 new Rect(0, 0, texture.width, texture.height), 56 Vector2.zero); 57 } 58 else 59 { 60 videoPlayer.Pause(); // 動画を一時停止する。 61 Texture2D texture = Resources.Load("images/nekonekodouga/pause1") as Texture2D; 62 startbutton.sprite = Sprite.Create(texture, 63 new Rect(0, 0, texture.width, texture.height), 64 Vector2.zero); 65 } 66 } 67}

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

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

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

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

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

guest

回答2

0

別回答を

秒が取れるなら、
Console.WriteLine($"{second/60}:{second%60}");
で。

んで、小数点以下を切り捨てるってだけなら、
int second=(int)length;
で。

投稿2021/08/31 22:21

編集2021/08/31 22:44
y_waiwai

総合スコア88042

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

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

0

ベストアンサー

TimeSpan 構造体を使います。

csharp

1using System; 2 3public class Hello 4{ 5 public static void Main() 6 { 7 int seconds = 573; 8 TimeSpan ts = new TimeSpan(0, 0, seconds); 9 string time = ts.ToString(@"mm\:ss"); 10 Console.WriteLine(time); 11 } 12}

結果

SimpleText

109:33

投稿2021/08/31 18:12

bboydaisuke

総合スコア5308

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問