Unity研究所<Unityによるゲーム開発、映像開発>

Unity初心者40代後半中年中間管理職おやじが綴るゲームで小遣い稼ぎできるようになるまでのブログ

Unity小ネタ アプリの実行時にファイルダイアログを使う

仕事での必要に駆られて動画再生アプリを作ろうと考えた(-_-メ)

 

〇必要な機能

 ・動画ファイルを開く

 ・動画ファイルの再生、停止、コマ送り

 ・二つ同時に開いて同時再生してながら内容を比較できるようにする

 

理由としては、会社がテレワーク環境を整えるためにVDIのシステムを導入した

 

が、既存の動画再生アプリのパフォーマンスが上がらない

 

そもそもコマ送りできるアプリが使えなかったり・・・などなど

 

いろいろアプリ探してもなかなか要求を満たすものがなく

 

じゃあ作るか!!

 

理由はこんな感じ

 

ということで、ざっと一番近道の実装方法を考えてみると・・・

 

Visual Stadio、MFCとかはさっぱりご無沙汰で

思い出すだけで数年かかりそう

 

Visual Basicならすぐに思い出せそうだが、そもそも組める環境なのか?!

 

 

なんやかんや使っているのはUnityしかない

 

ということで、ざっくりな実装方法案

 〇動画ファイルを開く

  ⇒ファイルダイアログを呼び出して、ファイルを選択

   Unityの実行環境で困難できたっけ?

 

 

 〇動画ファイルの再生、停止、コマ送り

       ⇒こいつはVideo Player コンポーネントを使えば何とかなりそう

 

 〇二つ同時に開いて同時再生してながら内容を比較できるようにする

  ⇒Video Playerを二つに並べて同時に再生すれば、何とかなるんじゃね?

 

 

前置きが長くなったが今回はUnityのビルド後の実行時にファイルダイアログを使う方法を見つけたので解説

 

◆イメージ 

 下記はUnity Editor上で実行しているが、ビルド後の環境でも同じように動作

f:id:Harukichi:20200915232947g:plain

 

 

というか、以前にも実装したことがあった

 

System Windows Formsをプラグインとして使用する方法

 

でも過去のソースをたどるのも面倒なので

 

検索して出てきた下記を使うことにする

 

 

github.com

 

上記のページからPackageをダウンロード

f:id:Harukichi:20200915232930p:plain

 

Packageファイルをプロジェクトにインポート

 

スクリプト

①まずは、using SFBにて、今回インポートしたスクリプトを使えるようにする

 

②次にいきなりダイアログを開くための関数を作成

 基本はインポートしたスクリプトのサンプルを参考に調整

 

public string OpenFile() //最終的にはファイルパスを取得できるように
{
  string
FilePath;

  var extensions = new[] //動画ファイルを開きたいのでフィルタをそれ用に設定
  {
   new ExtensionFilter( "Movie Files", "mp4", "mov", "avi" ),

  };

 

  //今回インポートしたスクリプト内のダイアログを使用する関数を実行

  //引数にダイアログのタイトル、ファイルのフィルタ、複数ファイルを選択する

   ためにtrue


  FilePath = StandaloneFileBrowser.OpenFilePanel("Select Movie File", "", extensions, true);

  return FilePath;

}

 

一応、以上でダイアログを開くところまでは完成

 

なお、プロジェクトの設定として、下記の項目をMonoにしておかないと、ビルド時にプラグインが見つからないと赤文字の英語で怒られる(イメージ)

f:id:Harukichi:20200915234057p:plain

 

案外ここまでは簡単にでけた

 

System Windows Formsだけでもできた感ありだが・・・

 

次回は、動画ファイル再生までを解説したい

 

以上