アマゾンバナーリンク

ディスプレイ広告

スポンサーリンク

【Unity】ファイルを簡単にダウンロード&アップロードできるEasy Downloader and Uploader【Asset】

こんにちは!ジェイです。今回は、Unityでゲーム開発をしていて、サーバーにファイルをダウンロード&アップロードする仕組みを使いたい場合に役に立つアセット「Easy Downloader and Uploader」の紹介をします。

記事内広告

概要

Easy Downloader and Uploader は、ウェブサーバ上で、ファイルをアップロードしたりダウンロードしたりしたい場合に非常に便利なプラグインです。このプラグインは、ダウンロードとアップロードを非常に簡単にできて、イベントシステムも統合されています。

UnityプロジェクトにEasy Downloader and Uploaderを統合した後、あなたが準備しているWebサーバーにファイルをダウンロードしたりアップロードする準備ができます。

もし統合されていない場合は、インテグレーションガイドをご覧ください。DLLファイルは、/Assets/Plugins/EasyDownloader.dllにあり、このDLLは、ダウンロードとアップロードの全機能を備えています。

ダウンロード後に保存されるファイルのデフォルトのターゲットディレクトリ Android = sdcard/Easy Downloader
プレーヤーの設定でSDカードの書き込み権限を与える必要があります。

使い方

イベント

1. ダウンロードが終了したときに発生

UploadAndDownload.Data構造体にダウンロードしたデータを格納し、ダウンロードが終了したときに発生します。

UploadAndDownload.onDownloadComplete += OnDownloadComplete;
void OnDownloadComplete(UploadAndDownload.Data data)
{
}

2. アップロードが完了したときに実行

UploadAndDownload.onUploadComplete += OnUploadComplete;
void OnUploadComplete()
{
}

3. エラーが発生した場合に実行

ダウンロード、アップロード、ディスクへの書き込み中にエラーが発生した場合に実行されます。

UploadAndDownload.onError += OnError;
void OnError(string error)
{
}

4. ダウンロードの進行中に発生

プログレスの値は0から1の間になります。

UploadAndDownload.onProgress += OnProgress;
void OnProgress(float progress)
{
}

5.アップロードの進行中に発生

プログレスの値は0から1の間になります。

UploadAndDownload.onUploadProgress += OnUploadProgress;
void OnUploadProgress (float progress)
{
}

5. ファイルがディスクに正常に保存されたときに実行

ファイルがディスクに正常に保存されたときに実行され、ファイルが保存された「パス」が表示されます。

UploadAndDownload.onSaved += OnSavedToDisk;
void OnSavedToDisk(string path)
{
}

ダウンロードとアップロードの方法

1. ウェブやローカルディスクからのファイルのダウンロード

public void Download(string url, bool isAutoSave, bool fromDisk)

引数

  • url : ウェブ上のファイルのURL
  • isAutoSave : trueの場合、ファイルはダウンロードされ、設定されたパスにディスクに保存されます。
  • fromDisk : ローカルディスクまたはウェブからのダウンロード

2. データをバイト配列にしてWebサーバーにアップロードする

private void Upload(string url, string folderPath, string fileName, byte[] bytes)

引数

  • url : ウェブ上のファイルのURL
  • folderPath : サーバー上のファイルを保存するフォルダ/ディレクトリの名前
  • fileName : ファイルの名前
  • bytes : bytes : アップロードされるバイト配列

3. 与えられたパスからファイルをアップロードする

public void UploadFile(string webUrl , string folderPath, string filePath)
  • webUrl : ウェブ上のファイルのURL
  • folderPath : サーバ上のファイルを保存するフォルダ/ディレクトリの名前
  • filePath : ディスク上のファイルのパス

注: folderPathに “My Uploaded Files “を指定した場合、ルートフォルダに “My Uploaded Files “がない場合は、"My Uploaded Files “ディレクトリが作成されます。アップロード “ディレクトリの中に “My Files “というサブディレクトリを作りたい場合は、folderPathとして「Uploads/My Files」を指定することもできます。

プロパティ

DownloadedData : ダウンロードしたすべてのデータが構造体に含まれています。

public struct Data
{
    public string text;
    public Texture2D texture;
    public byte[] bytes;
    public string url
}
  • isDownloading : ダウンロードが進行中であればtrue、そうでなければ、falseを返します。
  • isUploading : アップロードが進行中であればtrue、そうでなければ、falseを返します。
  • downloadDirectory : ダウンロードしたファイルを保存するディレクトリを設定または取得します。

注意点

実際に実装する場合は、サンプルシーンを実行してください。

  • WWWクラスに渡すURLは’%’でエスケープしなければなりません。
  • http://, https://, file:// プロトコルはiPhoneでサポートされています。 ftp:// プロトコルのサポートは、匿名でのダウンロードに限定されています。その他のプロトコルはサポートされていません。
  • WindowsおよびWindowsストアアプリでローカルファイルにアクセスするためにファイルプロトコルを使用する場合、file://を指定する必要があります。
  • ファイルにアクセスする場合は、file:///__(スラッシュ3つ)を指定する必要があります。
  • ウェブプレーヤのビルドに含まれるセキュリティサンドボックスは、ウェブプレーヤがあるサーバーでホストされていないコンテンツにアクセスすることを防ぎます。

インテグレーションガイド

Easy Downloader and Uploaderは非常に簡単に統合できます。このプラグインをUnityプロジェクトに統合してください。

  1. Easy Downloader and Uploaderプラグインをunityプロジェクトにインポートしてください。
  2. 次に以下のファイルがあることを確認してください。
  • /Assests/EasyDownloader/Documentation/Integration.rtf
  • /Assests/EasyDownloader/Documentation/Document.rtf
  • /Assets/Plugins/EasyDownloader/Prefab/EasyDownloader.prefab
  • /Assests/EasyDownloader/Example/Example.unity
  • /Assests/EasyDownloader/Example/EasyDownloaderExample.cs
  • /Assests/EasyDownloader/PHP/upload_file.php
  • /Assests/Plugins/EasyDownloader.dll
  • /Assets/Plugins/Android/RefreshGallery.jar
  • /Assets/Plugins/Android/RefreshAndroidGallery.cs
  1. upload_file.phpファイルをcrossdomain.xmlのポリシーでWebサーバに設置してください。
  2. EasyDownloader.prefabをシーンにドラッグします。
  3. ファイルのダウンロードとアップロードを行うスクリプトに、以下のようなパブリック変数を作成します。
  4. public UploadAndDownload download downloader;のように、ファイルをダウンロードしたりアップロードしたりする場所にパブリック変数を作成し、EasyDownloaderのゲームオブジェクトを上記の変数にドラッグします。
  5. . これで、このプラグインを使用する準備が整いました。このプラグインの使用方法については、使い方を参照してください

Crossdomain.xmlがサーバ上に存在している必要があります。

まとめ

アップ&ダウンローダーは、アセットストアでもどのようなファイルにでも対応しているのは、Easy Downloader and Uploaderだけです。使う機会は、特殊ですが、かなりの手間が省けるので、ぜひ活用しましょう!

+4