Version: 2023.1
言語: 日本語
Loading Resources at Runtime
スクリプトによるソースアセットの変更

ストリーミングアセット

Unity は、プロジェクトのビルド時に、シーンとアセットを組み合わせて、生成されたプレイヤー内のバイナリファイルにします。ただし、ファイルをターゲットマシン上の通常のファイルシステムに配置して、パス名を使って利用できるようにすることができます。例えば、iOS デバイスにムービーファイルをデプロイする場合、元のムービーファイルはファイルシステム内の場所から PlayMovie 関数を使用して再生できるようにする必要があります。このフォルダには、オンデマンドのダウンロードではなくプレイヤーのインストール時に直接配布する アセットバンドル を含めることも可能です。

Unity は、Unity プロジェクト内の StreamingAssets (大文字小文字を区別します) というフォルダーに配置された全てのファイルを、ターゲットマシンの特定のフォルダーにそのままコピーします。このフォルダーを取得するには、Application.streamingAssetsPath プロパティを使用します。StreamingAssets の場所の取得は、必ず Application.streamingAssetsPath を使用して行うことをお勧めします。これは必ずプラットフォーム上でアプリケーションが実行されている正確な場所を示すからです。

Application.streamingAssetsPath によって返される場所はプラットフォームごとに異なります。

  • ほとんどのプラットフォーム(Unity エディター、Windows、Linux プレイヤー) は Application.dataPath + "/StreamingAssets" を使用します。
  • macOS プレイヤーは Application.dataPath + "/Resources/Data/StreamingAssets" を使用します。
  • iOS は Application.dataPath + "/Raw" を使用します。
  • Android は、圧縮された APK/JAR ファイル内のファイル "jar:file://" + Application.dataPath + "!/assets" を使用します。
  • WebGL では、Application.streamingAssetsPath はウェブサーバー上の StreamingAssets/ パスを指す HTTP URL を返します。例えば、アプリケーションがローカルの開発サーバーに対して実行されている場合は、http://localhost:8000/unity_webgl_build/StreamingAssets/ が返されます。

ストリーミングアセットへのアクセス

Android および WebGL プラットフォームでは、ファイルシステム API と streamingAssets パス を使用してストリーミングアセットファイルに直接アクセスすることはできません。代わりに UnityWebRequest クラスを使用してコンテンツにアクセスしてください。

ノート:

  • streamingAssets パスは読み取り専用です。ランタイムに streamingAssets ディレクトリに変更を加えたり新しいファイルを書き込んだりしないでください。
  • StreamingAssets フォルダーにある .dll ファイルとスクリプトファイルはスクリプトのコンパイルに含まれません。
  • アセットバンドルAddressables は、通常のゲームビルドデータの一部ではないコンテンツにアクセスするための代替方法で、Stream Assets フォルダーよりも優されます。
Loading Resources at Runtime
スクリプトによるソースアセットの変更