Unity はビルド時に必要なアセットをプロジェクトに結合します。しかし、場合によってはターゲットとなるマシンの標準的なファイルシステム上にデータを配置し、パス名で参照した方がよい事もあります。例えば iOS 上で動画ファイルを展開する場合、 PlayMovie
関数で再生するためには、元の動画ファイルをファイルシステム上に置かなくてはなりません。
Unity は、Unity プロジェクトの StreamingAssets (大文字小文字を区別します) という名のフォルダーに配置したファイルを、ターゲットマシンの特定のフォルダーにそのまま何も変更されない状態で保持します。フォルダーを取得するには、Application.streamingAssetsPath プロパティを使います。StreamingAssets の場所を取得するには、Application.streamingAssetsPath
を使うことが、常に最善の方法です。プラットフォーム上でアプリケーションが実行されている正確な場所を示すからです。
Application.streamingAssetsPath
によって返される場所はプラットフォームごとに異なります。
Application.dataPath + "/StreamingAssets"
を 使用しますApplication.dataPath + "/Resources/Data/StreamingAssets"
を使用しますApplication.dataPath + "/Raw"
を使用します"jar:file://" + Application.dataPath + "!/assets"
内のファイルを使用しますAndroid や WebGL など、ストリーミングアセットファイルに直接アクセスできないプラットフォームでストリーミングアセットを読み取るには、UnityWebRequest を使用します。例は、Application.streamingAssetsPath を参照してください。
多くのプラットフォームでは、ストリーミングアセットフォルダーの場所は読み取り専用です。ランタイムに新しいファイルに変更を加えたり書き込むことはできません。書き込み可能なフォルダーの場所には Application.persistentDataPath を使用します。
ノート: StreamingAssets フォルダーにある DLL ファイルとスクリプトファイルはコンパイルに含まれません。
Asset Bundles や Addressables は、通常のゲームのビルド データの一部ではないコンテンツにアクセスする別の方法で、多くの場合、 ストリーミングアセットフォルダーよりも優先されます。