@yuz_u

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で連打できるbuttonを作りたい

Unityで連打できるbuttonを作りたい

Unityでボタンを作っています。
ボタンを押すと2秒ほどの動画が流れるというシンプルなボタンです。
ここまではうまくいくのですが、動画の再生中はボタンが機能しなくなります。

動画の再生中もボタンが押せて、ボタンを押すと最初から再生するような仕組みにしたいです。ご教授いただければ幸いです。

動画はRawImageにRenderTextureで表示、RawImageにVideoPlayerをセットしています。
ButtonのOnClickにはRawImageのVideoPlayer.playをセットしています。

RawImageをprefabにしてbuttonをOnClickするとRawImageが複製、再生が終わったら消滅という流れが自然なのかと考えていますがいまいちスクリプトがうまく書けません…。

0 likes

1Answer

ViedoPlayerをスクリプトから制御する

以下のスクリプトを書いて、ViedoPlayerがアタッチされているオブジェクト、または、その親オブジェクトにアタッチしてください。

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

public class PlayVideo : MonoBehaviour {

	/// <summary>プレーヤー</summary>
	private VideoPlayer player = null;

	/// <summary>初期化</summary>
	private void Start () {
		player = GetComponentInChildren<VideoPlayer> (); // ヒエラルキーからプレイヤーを見つける
	}

	/// <summary>再生ボタンが押された</summary>
	public void OnPushPlayButton () {
		if (player != null) {
			if (player.isPlaying) {
				player.Stop (); // 再生中ならいったん停止
			}
			player.Play (); // 再生開始
		}
	}

}

ButtonコンポーネントのOnClick ()で、現在VideoPlayer.PlayになっているところをPlayVideo.OnPushPlayButtonに変更してください。
以上で、ご要望が満たせると思います。
(Unity 2019.4.28で動作することを確認しました。)

なお、VideoPlayer.Play()は、既に再生中に呼ばれると、そのまま再生を継続するようです。
そのため、再生中に最初から再生し直す場合は、いったんVideoPlayer.Stop ()で再生を止めてやる必要があります。

参考: VideoPlayer (Unityスクリプトリファレンス)

0Like

Your answer might help someone💌