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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

1回答

2703閲覧

UnityのVideo Playerコンポーネントにスクリプト側から別々のurlを指定したい

Haru3839

総合スコア0

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

1クリップ

投稿2020/10/08 03:03

編集2020/10/08 07:23

実現したいこと

Unityで対象のパス以下の動画ファイルを一覧表示する機能を実装しています。
1動画情報を表示するためにRawImageとvideoplayerを追加したprefabを作成し、
スクリプト側でvideo playerのurlに対象のパスを渡しています。
別々の動画のurlを指定していますが全て同じ動画として表示されていて困っています。
どなたかご教授お願い致します。

発生している問題

各動画ごとに上記のprefabをInstantiateでクローンしていますが、その都度別のurlを渡してもすべて同じ動画になってしまいます。

該当のソースコード

C#

1public class VideoPlayerManager : SingletonMonoBehaviour<VideoPlayerManager> 2{ 3 public GameObject VideoListTemplate;//Raw ImageとVideo Playerのコンポーネントを追加したPrefabです 4 public GameObject VideoListArea;//動画情報を追加する対象のオブジェクトです。 5 // Start is called before the first frame update 6 void Start() 7 { 8 DirectoryInfo dir = new DirectoryInfo("Assets/Resources/Videos/"); 9 FileInfo[] info = dir.GetFiles("*.mp4"); 10 info.ToList<FileInfo>().ForEach(x=> { 11 var videoInfo = getVideoInfo(x.Name); 12 var videoList = Instantiate(VideoListTemplate, VideoListArea.transform); 13 videoList.transform.Find("Thumbnail").GetComponent<VideoPlayer>().url = x.FullName; 14 videoList.transform.Find("Label Area").transform.Find("Tool ID").GetComponent<Text>().text = videoInfo[(int)VideoInfoEnum.ToolID]; 15 videoList.transform.Find("Label Area").transform.Find("ID").GetComponent<Text>().text = "ID" + videoInfo[(int)VideoInfoEnum.ID]; 16 videoList.transform.Find("Label Area").transform.Find("Date").GetComponent<Text>().text = "Date:" + x.CreationTime.ToString(); 17 }); 18 } 19 string[] getVideoInfo(string videoFileName) { 20 return videoFileName.Replace(".mp4","").Split('_'); 21 } 22}

補足情報(FW/ツールのバージョンなど)

Unity:2019.3.15f
Visual Studio:Professional 2019

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

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

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

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

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

sakura_hana

2020/10/08 12:07

確認ですが、Textコンポーネントに記載されている内容は全て同一ですか? また試しにどこかのTextコンポーネントに「x.FullName」を代入して適切な値になっているか確認してみてください。
guest

回答1

0

自己解決

Raw Image もvideo playerも同一のrender textureを使用しているのが原因でした。
下記のようにその都度render textureを作成し、その都度video playerのコンポーネントに追加した場合別々の動画として表示されました。

C#

1 RenderTexture renderTexture = new RenderTexture(300, 300, 24); 2 var videoPlayer = videoList.transform.Find("Thumbnail").GetComponent<VideoPlayer>(); 3 videoPlayer.url = x.FullName; 4 videoPlayer.targetTexture = renderTexture; 5 videoList.transform.Find("Thumbnail").GetComponent<RawImage>().texture = renderTexture;

ご指摘/質問頂きありがとうございました。

投稿2020/10/12 07:19

Haru3839

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問