検証内容
10,000 個のファイルを
StreamingAssets にコピーする時に
[MenuItem( "Tools/Copy Files" )] private static void CopyFiles() { AssetDatabase.StartAssetEditing(); foreach ( var path in Directory.GetFiles( "Files" ) ) { var filename = Path.GetFileName( path ); File.Copy( path, $"Assets/StreamingAssets/{filename}" ); } AssetDatabase.StopAssetEditing(); AssetDatabase.Refresh(); }
上記のようなコードでコピーすると 92 秒 ほどインポートに時間がかかるが
[MenuItem( "Tools/Copy Files" )] private static void CopyFiles() { AssetDatabase.StartAssetEditing(); foreach ( var path in Directory.GetFiles( "Files" ) ) { var filename = Path.GetFileName( path ); File.Copy( path, $"Assets/StreamingAssets/{filename}" ); // .meta を構成する文字列を生成 var content = $@"fileFormatVersion: 2 guid: {Guid.NewGuid():N} DefaultImporter: externalObjects: {{}} userData: assetBundleName: assetBundleVariant: "; // StreamingAssets にコピーしたファイルの .meta を作成 File.WriteAllText( $"Assets/StreamingAssets/{filename}.meta", content ); } AssetDatabase.StopAssetEditing(); AssetDatabase.Refresh(); }
StreamingAssets にファイルをコピーする時に一緒に .meta を作ってあげると
インポートにかかる時間が 26 秒 ほどまで短縮できる