public static bool CopyToStreamingAssets(string platform, ResourceEditorTargetCopyOptions copyOptions, ConfigDataConfigurator configDataConfigurator, AssetBundleConfigurator assetBundleConfigurator) { var configData = configDataConfigurator.LoadConfigData(platform); if (configData == null) { return(false); } // options var rootDirectory = ResourceStreamingLocation.FullRootPath; if (copyOptions.ClearFolders) { var platformRootDirectory = Path.Combine(rootDirectory, platform); ResourceEditorHelper.ClearDirectory(platformRootDirectory); } if (copyOptions.ClearOtherPlatforms) { DeleteOtherPlatformDirectory(ResourceStreamingLocation.FullRootPath, platform); } // copy config var result = configDataConfigurator.CopyConfigToTarget(platform); // config asset bundles var locationDatas = configData.LocationDatas; result &= assetBundleConfigurator.CopyAssetBundlesToStreamingTarget(locationDatas, platform); return(result); }
private void MoveAssetBundleToVirtualLocations(List <LocationData> locationDatas, string originDirectory, string targetPlatform, bool clearFolders) { var virtualStreamingPath = ResourceStreamingLocation.GetVirtualAssetBundleFullRootPath(targetPlatform); var virtualServerPath = ResourceServerLocation.GetVirtualAssetBundleFullRootPath(targetPlatform); var virtualOdrPath = ResourceODRLocation.VirtualFullRootPath; if (clearFolders) { ResourceEditorHelper.ClearDirectory(virtualStreamingPath); ResourceEditorHelper.ClearDirectory(virtualServerPath); if (targetPlatform == ResourceSettings.PLATFORM_DIRECTORY_IOS) { ResourceEditorHelper.ClearDirectory(virtualOdrPath); } } foreach (var locationData in locationDatas) { var targetDirectory = string.Empty; switch (locationData.Location) { case LocationType.Streaming: targetDirectory = virtualStreamingPath; break; case LocationType.Server: targetDirectory = virtualServerPath; break; case LocationType.ODR: targetDirectory = Path.Combine(virtualOdrPath, locationData.Id); break; } if (string.IsNullOrEmpty(targetDirectory)) { continue; } if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } foreach (var assetBundleData in locationData.AssetBundleDatas) { MoveAssetBundle(assetBundleData.Id, originDirectory, targetDirectory); } } }
public bool BuildAssetBundles(List <LocationData> locationDatas, string targetPlatform, ResourceEditorAssetBundleBuildOptions buildOptions) { var outputPath = ResourceOutputLocation.GetAssetBundleFullRootPath(targetPlatform); var options = BuildAssetBundleOptions.None; switch (buildOptions.CompressOption) { case CompressOption.Uncompressed: options |= BuildAssetBundleOptions.UncompressedAssetBundle; break; case CompressOption.ChunkBasedLZ4: options |= BuildAssetBundleOptions.ChunkBasedCompression; break; } if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } if (buildOptions.ClearFolders) { ResourceEditorHelper.ClearDirectory(outputPath); } var buildManifest = BuildPipeline.BuildAssetBundles(outputPath, options, buildOptions.BuildTarget); if (buildManifest == null) { return(false); } MoveAssetBundleToVirtualLocations(locationDatas, outputPath, targetPlatform, buildOptions.ClearFolders); return(true); }