public void ExportScriptableObjects(ScriptableObject[] scriptableObjects, ysEditorData.Platform buildTarget, string bundleName, string outputDirectoryPath) { AssetBundleBuild[] buildArray = new AssetBundleBuild[1]; buildArray[0].assetBundleName = FormatOutputName(bundleName); string[] paths = new string[scriptableObjects.Length]; for (int i = 0; i < scriptableObjects.Length; i++) { paths[i] = AssetDatabase.GetAssetPath(scriptableObjects[i]); } buildArray[0].assetNames = paths; BuildTarget buildTaget = BuildTarget.Android; switch (buildTarget) { case ysEditorData.Platform.android: buildTaget = BuildTarget.Android; break; case ysEditorData.Platform.ios: buildTaget = BuildTarget.iOS; break; default: break; } BuildPipeline.BuildAssetBundles( outputDirectoryPath, buildArray, BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, buildTaget); Debug.Log("All prefab exports succeed..."); }
public void ExportUnityObjects(UnityEngine.Object[] prefabs, ysEditorData.Platform buildTarget, string bundleName, string outputDirectoryPath, string extention = "unity3d") { AssetBundleBuild[] buildArray = new AssetBundleBuild[1]; buildArray[0].assetBundleName = FormatOutputName(bundleName); string[] paths = new string[prefabs.Length]; for (int i = 0; i < prefabs.Length; i++) { paths[i] = AssetDatabase.GetAssetPath(prefabs[i]); } buildArray[0].assetNames = paths; BuildTarget buildTaget = BuildTarget.Android; switch (buildTarget) { case ysEditorData.Platform.android: buildTaget = BuildTarget.Android; break; case ysEditorData.Platform.ios: buildTaget = BuildTarget.iOS; break; default: break; } BuildPipeline.BuildAssetBundles( outputDirectoryPath, buildArray, BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, buildTaget); EditorUtility.OpenFilePanel("输出路径", Path.GetFullPath(outputDirectoryPath), extention); //Debug.Log("All prefab exports succeed..."); }
//单独打包一个prefab到一个bundle public void ExportPrefab(GameObject prefab, ysEditorData.Platform buildTarget, string outputDirectoryPath) { AssetBundleBuild[] buildArray = new AssetBundleBuild[1]; buildArray[0].assetBundleName = FormatOutputName(prefab.name); buildArray[0].assetNames = new string[] { AssetDatabase.GetAssetPath(prefab) }; BuildTarget buildTaget = BuildTarget.Android; switch (buildTarget) { case ysEditorData.Platform.android: buildTaget = BuildTarget.Android; break; case ysEditorData.Platform.ios: buildTaget = BuildTarget.iOS; break; default: break; } BuildPipeline.BuildAssetBundles( outputDirectoryPath, buildArray, BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, buildTaget); Debug.Log(prefab.name + " exports succeed..."); }
public void ExportScriptableObjects(List <ScriptableObject> scriptableObjects, ysEditorData.Platform buildTarget, string bundleName, string outputDirectoryPath, bool isShowDialog = false) { AssetBundleBuild[] buildArray = new AssetBundleBuild[1]; buildArray[0].assetBundleName = FormatOutputName(bundleName); string[] paths = new string[scriptableObjects.Count]; for (int i = 0; i < scriptableObjects.Count; i++) { paths[i] = AssetDatabase.GetAssetPath(scriptableObjects[i]); } buildArray[0].assetNames = paths; BuildTarget buildTaget = BuildTarget.Android; switch (buildTarget) { case ysEditorData.Platform.android: buildTaget = BuildTarget.Android; break; case ysEditorData.Platform.ios: buildTaget = BuildTarget.iOS; break; default: break; } BuildPipeline.BuildAssetBundles( outputDirectoryPath, buildArray, BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, buildTaget); string tipString = "导出成功,共导出" + scriptableObjects.Count + "个文件,1个资源包,资源包名:" + bundleName + "资源路径:" + outputDirectoryPath; if (isShowDialog) { EditorUtility.DisplayDialog("提示", tipString, "继续"); } else { Debug.Log(tipString); } }
//打包多个prefab到一个bundle public void ExportPrefabs(GameObject[] prefabs, ysEditorData.Platform buildTarget, string bundleName, string outputDirectoryPath, bool showResultDialog = false) { if (!Directory.Exists(outputDirectoryPath)) { Directory.CreateDirectory(outputDirectoryPath); } AssetBundleBuild[] buildArray = new AssetBundleBuild[1]; buildArray[0].assetBundleName = FormatOutputName(bundleName); string[] paths = new string[prefabs.Length]; for (int i = 0; i < prefabs.Length; i++) { paths[i] = AssetDatabase.GetAssetPath(prefabs[i]); } buildArray[0].assetNames = paths; BuildTarget buildTaget = BuildTarget.Android; switch (buildTarget) { case ysEditorData.Platform.android: buildTaget = BuildTarget.Android; break; case ysEditorData.Platform.ios: buildTaget = BuildTarget.iOS; break; default: break; } BuildPipeline.BuildAssetBundles( outputDirectoryPath, buildArray, BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, buildTaget); Debug.Log("All prefab exports succeed..."); if (showResultDialog) { EditorUtility.DisplayDialog("提示", "文件导出成功,共" + prefabs.Length + "个文件,共" + buildArray.Length + "个资源包。", "继续"); EditorUtility.OpenFilePanel("导出路径", Path.GetFullPath(outputDirectoryPath), ""); } }
//打包多个prefab到多个bundle public void ExportPrefabsIndependent(List <GameObject> prefabList, ysEditorData.Platform platform, string outputDirectoryPath, bool isShowDialog = false) { CheckDirectoryPath(outputDirectoryPath, true); AssetBundleBuild[] buildArray = new AssetBundleBuild[prefabList.Count]; for (int i = 0; i < prefabList.Count; i++) { buildArray[i].assetBundleName = FormatOutputName(prefabList[i].name); buildArray[i].assetNames = new string[] { AssetDatabase.GetAssetPath(prefabList[i]) }; } BuildTarget buildTaget = BuildTarget.Android; switch (platform) { case ysEditorData.Platform.android: buildTaget = BuildTarget.Android; break; case ysEditorData.Platform.ios: buildTaget = BuildTarget.iOS; break; default: break; } BuildPipeline.BuildAssetBundles( outputDirectoryPath, buildArray, BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, buildTaget); string tipString = "导出成功,共导出" + prefabList.Count + "个文件,1个资源包,资源路径:" + outputDirectoryPath; if (isShowDialog) { EditorUtility.DisplayDialog("提示", tipString, "继续"); } else { Debug.Log(tipString); } }