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); } } }
private void MoveAssetBundle(string assetBundleTag, string originDirectory, string targetDirectory) { var originPath = Path.Combine(originDirectory, assetBundleTag); var targetPath = Path.Combine(targetDirectory, assetBundleTag); ResourceEditorHelper.MoveFile(originPath, targetPath); // manifest var manifestName = assetBundleTag + ".manifest"; originPath = Path.Combine(originDirectory, manifestName); targetPath = Path.Combine(targetDirectory, manifestName); ResourceEditorHelper.MoveFile(originPath, targetPath); }
private static void DeleteOtherPlatformDirectory(string rootDirectory, string targetPlatform) { var otherPlatforms = ResourceEditorHelper.CollectBrotherDirectoryNames(rootDirectory, targetPlatform); if (otherPlatforms == null) { return; } foreach (var otherPlatform in otherPlatforms) { var otherPlatformRootDirectory = ResourceSettings.CombinePath(rootDirectory, otherPlatform); ResourceEditorHelper.DeleteDirectory(otherPlatformRootDirectory); } }
private void DrawTargetCopy(ResourceEditorPlatformData editorPlatformData) { EditorGUILayout.BeginVertical(GUI.skin.box); ResourceEditorHelper.WideLabelField("Target Copy: ----", EditorStyles.boldLabel); EditorGUILayout.BeginVertical(GUI.skin.box); var copyOptions = editorPlatformData.TargetCopyOptions; copyOptions.ClearFolders = EditorGUILayout.Toggle("Clear Folders:", copyOptions.ClearFolders); copyOptions.ClearOtherPlatforms = EditorGUILayout.Toggle("Clear Other Platforms:", copyOptions.ClearOtherPlatforms); if (GUILayout.Button("Copy to Streaming Assets")) { EditorApplication.delayCall += () => CopyToTarget(editorPlatformData); } EditorGUILayout.EndVertical(); EditorGUILayout.EndVertical(); }
private void DrawAssetBundleLocations(ResourceEditorPlatformData editorPlatformData) { EditorGUILayout.BeginVertical(GUI.skin.box); // location settings ResourceEditorHelper.WideLabelField("Locations Settings: ----", EditorStyles.boldLabel); _assetBundleScrollPosition = _assetBundleConfigurator.DrawAssetBundleDatas(editorPlatformData.EditorAssetBundleDatas, _assetBundleScrollPosition); // one-key set EditorGUILayout.BeginHorizontal(GUI.skin.box); _oneKeyLocation = (LocationType)EditorGUILayout.EnumPopup("One-key Location:", _oneKeyLocation); if (GUILayout.Button("One-key Switch")) { _assetBundleConfigurator.SwitchAllAssetBundleDataLocations(editorPlatformData.EditorAssetBundleDatas, _oneKeyLocation); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }
private void DrawConfigPreview(ResourceEditorPlatformData editorPlatformData) { EditorGUILayout.BeginVertical(GUI.skin.box); // preview ResourceEditorHelper.WideLabelField("Config Preview: ----", EditorStyles.boldLabel); _configShowPosition = _configDataConfigurator.DrawConfigData(editorPlatformData.ConfigData, editorPlatformData.ConfigFoldout, _configShowPosition); // update EditorGUILayout.BeginHorizontal(GUI.skin.box); var generateOptions = editorPlatformData.ConfigGenerateOptions; generateOptions.CollectSprite = EditorGUILayout.Toggle("Collect Sprite:", generateOptions.CollectSprite); if (GUILayout.Button("Update Config Data (in virtual)")) { EditorApplication.delayCall += () => UpdateConfigData(editorPlatformData); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }
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); }
private void DrawAssetBundleBuilds(ResourceEditorPlatformData editorPlatformData) { EditorGUILayout.BeginVertical(GUI.skin.box); ResourceEditorHelper.WideLabelField("Asset Bundle Build: ----", EditorStyles.boldLabel); // options EditorGUILayout.BeginVertical(GUI.skin.box); var buildOptions = editorPlatformData.AssetBundleBuildOptions; buildOptions.ClearFolders = EditorGUILayout.Toggle("Clear Folders:", buildOptions.ClearFolders); EditorGUILayout.BeginHorizontal(); buildOptions.CompressOption = (CompressOption)EditorGUILayout.EnumPopup("Compress Options:", buildOptions.CompressOption); buildOptions.BuildTarget = (BuildTarget)EditorGUILayout.EnumPopup("Build Target:", buildOptions.BuildTarget); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); if (GUILayout.Button("Build Asset Bundles (in virtual)")) { EditorApplication.delayCall += () => BuildAssetBundles(editorPlatformData); } EditorGUILayout.EndVertical(); }