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

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

新規登録して質問してみよう
ただいま回答率
85.30%
Unity

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

Q&A

解決済

2回答

238閲覧

Unityで スライダーバーを使って音楽ファイルの再生場所を指定したい

Tora_ou

総合スコア7

Unity

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

0グッド

0クリップ

投稿2025/06/02 17:14

編集2025/06/03 00:42

実現したいこと

スライダーバーを使って音楽ファイルの再生場所を指定したいのですが
例えば全体が3分間の音楽でスライダーバーを1分15秒の所に動かせば1分15秒の部分の音楽が流れる・・・
という、一般的な音楽プレイヤーでは必ずそうなっていて有って当たり前の機能なのですが
Unityでこれを実装しようとして調べてみるとなんだかとても難しそうな方法ばかりが出てきます。
こんなにも難しそうな方法でしか実装出来ないのであればそれはもう頑張るしかないのですが、
この音楽プレイヤーには有って当たり前の機能を簡単に実装する方法は無いものなのでしょうか。

発生している問題・分からないこと

難しそうな方法でしか実装出来ないのであればそれはもう頑張るしかないのですが、
スライダーバーを使って音楽ファイルの再生場所を指定する、という
普通の音楽プレイヤーには有って当たり前の機能を簡単に実装する方法って
Unityには本当に無いのでしょうか。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

検索するとスライダーバーで音楽やSEの音量を設定する事を説明している動画やページは
それはもうバンバンといくらでも見つかるし、音量の調整のほうはそんなに難しくなくて再現も出来るのですが
スライダーバーで音楽の再生位置を指定する事を説明している動画、ページはなかなか見つかりません。
見つかったとしてもかなり複雑で難しそうな方法ばっかりなんですよね・・・

補足

特になし

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

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

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

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

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

YAmaGNZ

2025/06/04 05:03

解決済みになっていますが「Unity 音楽 再生位置」とでも検索すれば指定時間からの再生や現在再生している時間の取得等の情報が得られるかと思います。 それとスライダーを結びつけるのはそれほどむつかしい話ではないかと思います。 ただ再生途中にスライダーを動かして再生時間を飛ばす等の操作が可能なのかについては分かりません。
Tora_ou

2025/06/04 07:29

>>再生途中にスライダーを動かして再生時間を飛ばす等の操作 まさにこれが、この部分が想像していた以上にそこそこ苦労しそうです。 スライダーバーで音楽の再生位置を操作するのは何十年も前から有るし、 Unityにも有って当然の機能でしょう、ぐらいに思っていたもので意外なものです。 コメントありがとうございます!
YAmaGNZ

2025/06/04 11:57

スライダーが動かされたらその値でaudioSource.timeを変更しても変わらないってことですか? ぱっと調べた感じサンプルが全部再生前にaudioSource.timeを変更して再生するといったものでしたので再生途中にaudioSource.timeを変更して再生場所が変わるのか確証がなかったので・・・
guest

回答2

0

下記のコードのようにスライダーで値を決定した際にAudioSourceのTimeを変更してやれば再生中でも再生場所の指定はできました。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class slidercontrol : MonoBehaviour 7{ 8 public AudioSource audiosource; 9 10 private Slider slider; 11 private bool isChanging = false; 12 13 // Start is called before the first frame update 14 void Start() 15 { 16 slider = GetComponent<Slider>(); 17 18 // スライダーの最大値を音楽の長さとする 19 slider.maxValue = audiosource.clip.length; 20 21 // 音楽再生開始 22 audiosource.Play(); 23 } 24 25 // Update is called once per frame 26 void Update() 27 { 28 // 再生場所を変更中の場合は更新しない 29 // このようにしないと変更できなくなる 30 if (!isChanging) 31 { 32 // スライダーの値を再生時間とする 33 slider.value = audiosource.time; 34 } 35 } 36 37 /// <summary> 38 /// スライダーで再生場所の変更を開始 39 /// PointerDownイベントに設定する 40 /// </summary> 41 public void PlayPositionChangeStart() 42 { 43 // 変更開始フラグをON 44 isChanging = true; 45 } 46 47 /// <summary> 48 /// スライダーで再生場所を決定したときに呼び出す 49 /// PointerUpイベントに設定する 50 /// </summary> 51 public void PlayPositionChange() 52 { 53 // スライダーの値を再生場所として設定 54 audiosource.time = slider.value; 55 // 変更開始フラグをOFF 56 isChanging = false; 57 } 58} 59

投稿2025/06/04 22:44

YAmaGNZ

総合スコア10592

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

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

Tora_ou

2025/06/05 05:22

ありがとうございます! 早速試してみたいと思います。
guest

0

ベストアンサー

Unityは、主にゲームを作るための開発環境です。
「ゲーム中のBGMの再生位置を、ユーザが自由に変えられる」といった機能を持ったゲームは見たことありませんし、必要だとも思いません。
ですので、Unityで音楽プレイヤーを作るのであれば、ある程度ご自身で考えて作る必要はあるでしょう。
(アセットストアには意外となんでもあったりするので、探してみるのもいいかもしれません。)


Unityではありませんが、音楽プレイヤーを作ったことがある経験から言わせてもらうと、「スライダーで再生位置を操作するUI」は、基本的にスライダーの値が変更されたら再生位置を変更させる、という機能になります。

ただ、厄介なのは「再生中にも再生位置が変わるので、UIに反映させる」点です。
単純に作れば、「再生中の再生位置の変更によるスライダーの値の変更」と「スライダーの値の変更による再生位置の変更」が繰り返し行われてしまうので、工夫が必要です。

また、スライダーの値の変更通知は、ユーザが少しでもスライダーを動かすと通知されるので、非常に短いスパンで発生することになり、その都度再生位置を変えているとユーザにとって非常に聞き苦しいことになってしまいます。
よって、ある程度遅延をしてから再生位置を変更する、といった機能もよくあるようです。
(手元にあったspotifyのプレイヤーも、そんな仕様でした)

このように、ある程度厄介事はあると思います。(難しいことだとは思ってません)

投稿2025/06/04 00:17

katsuko

総合スコア3591

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

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

Tora_ou

2025/06/04 04:37

音楽系のゲームを作ろうとするにあたって、今回そういう機能が必要でした。 音楽プレイヤー系には100%付いてる機能なのでそんなに複雑な事だとは思ってなかったのですが 実際にやろうとするとなかなかに手間がかかるようですね。 コメントありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問