@bloodrosesoll2 (kroro)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

unityにて、videoplayer(ムービー)とaudiosauce(音声)を同時に一時停止させたい。

解決したいこと

unityにて、videoplayer(ムービー)とaudiosauce(音声)を同時に一時停止させたいのですが、やり方分かる方いましたらご教授お願い致します。
今月発売予定のゲームでムービーを繋いでいくような作品なのですが、下のがネットで見つけたコードなのですがムービーを再生中に一時停止が出来て、ムービーが終わったら次のシーンに飛ぶというものなのですが、ここにムービーと同時にBGMも止まるように設定したいのですが分かる方がいましたら教えてください。

ムービーに音声が入っていた場合、どうやって音声をゲーム中に変えるのか調べましたが分からなかったので、音声とムービーを別々で流すことで音声をゲーム中にコントロールしたいのですが、音声とムービーを別々にすると下のコードのムービーが止まった時に音声は止まらないので困っております。

プログラミングは素人でゲーム開発はネットで見つけたコードをうまいこといじってどうにかしてきたのですが、今回のvideoplayerの記事がネットでほとんどなかった為、2日ほど試行錯誤しましたがうまくいきませんでした。

多分下のコードにaudiosauceがvideoplayerと同時に消えるように書き込めばうまくいくと思うのですが、分かる方いらっしゃいましたら解決法などご教授よろしくお願いします。

発売間近ですので解決しない場合は今回音声設定は無しで販売しようと思っております。
販売後でも解決しましたら導入出来ますので。
よろしくお願いします。

該当するソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.Video;

public class videoStop : MonoBehaviour
{

    [SerializeField] VideoPlayer videoPlayer;
    [SerializeField] GameObject menu;
    
    private int hoge ;
public int Hoge{ get { return hoge; }}

    bool videoPause = false;



    // Start is called before the first frame update
    void Start()
    {
        videoPlayer.isLooping = true;
        menu.SetActive(false);
        Cursor.visible = false;

        videoPlayer.loopPointReached += FinishPlayingVideo;
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            videoPause = !videoPause;

            // メニューとカーソルの表示
            menu.SetActive(videoPause);
            Cursor.visible = videoPause;

            // ビデオの停止
            if (videoPause)
            {
                videoPlayer.Pause();
            }
            else
            {
                videoPlayer.Play();
            }

        }
    }

    public void FinishPlayingVideo(VideoPlayer vp)
    {
        videoPlayer.Stop();
        SceneManager.LoadScene("ON4");
    }
}





 

### 自分で試したこと

とりあえずこの部分にaudiosauceのプログラムを書いたり色々試しましたがうまくいきませんでした。


          // ビデオの停止
            if (videoPause)
            {
                videoPlayer.Pause(); AudioSource.Pause();
            }
            else
            {
                videoPlayer.Play();   AudioSource.Play();
            }
0 likes

1Answer

少し単純化して、以下のような感じでやってみましたが、Escキーを押す度に、意図通りに、ビデオとオーディオが一時停止と再生を繰り返しました。

スクリーンショット 2022-12-19 154508.png

CanvasUI.Imageを置き、同じゲームオブジェクトに全てのコンポーネントを配置しています。

MoviePlayer.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;

public class MoviePlayer : MonoBehaviour {

    [SerializeField] private VideoPlayer videoPlayer;
    [SerializeField] private AudioSource audioSource;
    private bool videoPause = false;

    void Start () {
        videoPlayer.isLooping = true;
        audioSource.loop = true;
    }

    void Update () {
        if (Input.GetKeyDown (KeyCode.Escape)) {
            videoPause = !videoPause;
            if (videoPause) {
                videoPlayer.Pause ();
                audioSource.Pause ();
            } else {
                videoPlayer.Play ();
                audioSource.Play ();
            }
        }
    }

}

スクリプト以外の部分に課題が存在する可能性はないでしょうか?

1Like

Comments

  1. @bloodrosesoll2

    Questioner

    videoplayerにaudioをくっつけてしまえばいいのですね!勉強になります!
    これでvolumeも操れるしムービーもサウンドも一時停止出来ました!ありがとうございます!

    これで理想通りのゲームシステムで完成出来そうです。

    本当にありがとうございました。
  2. 同じゲームオブジェクトにアタッチすることは必須ではないと思うのですが、
    ともあれ、お役に立てたなら何よりでした。

Your answer might help someone💌