private static string ResultBuildTypeExtension( AssetBuildType buildType ) { switch( buildType ) { case AssetBuildType.ShipDefine: return Defines.AssetExt.ShipDefine; case AssetBuildType.Model: return Defines.AssetExt.ShipModel; case AssetBuildType.Effect: return Defines.AssetExt.Effect; case AssetBuildType.Audio: return Defines.AssetExt.AudioClip; case AssetBuildType.Bullet: return Defines.AssetExt.Bullet; case AssetBuildType.SceneDefine: return Defines.AssetExt.SceneDefine; case AssetBuildType.SceneObject: return Defines.AssetExt.SceneObject; default: return Defines.AssetExt.UnityAsset; } }
private static string ResultBundleSavePath( AssetBuildType buildType ) { switch( buildType ) { case AssetBuildType.ShipDefine: return ShipDefineOutputPath; case AssetBuildType.Model: return ModelOutputPath; case AssetBuildType.Effect: return EffectOutputPath; case AssetBuildType.Audio: return AudioOutputPath; case AssetBuildType.Bullet: return BulletOutputPath; case AssetBuildType.SceneDefine: return SceneSettingOutputPath; case AssetBuildType.SceneObject: return SceneObjectOutputPath; default: Debug.LogWarning("未指定Bundle的导出文件目录!"); return "Assets/"; } }
public static void BuildAssetBundle( Object asset, AssetBuildType buildType ) { if( !asset ) { UnityEditor.EditorUtility.DisplayDialog(EditorConfig.GUI_NOTICE, EditorConfig.GUI_SELECT_OBJ_ERROR, EditorConfig.GUI_MSG_BUTTON_OK); return; } string savePath = ResultBundleSavePath( buildType ); string assetExt = ResultBuildTypeExtension( buildType ); string[] dependencies = AssetDatabase.GetDependencies( new string[] { AssetDatabase.GetAssetPath( asset ) } ); //for( int i = 0; i < dependencies.Length; i++ ) Debug.Log( "Dependencies :" + dependencies[i] ); string bundleName = Path.ChangeExtension( asset.name, assetExt ); string[] m_assetNames = dependencies; AssetBundleBuild[] buildInfo = new[] { new AssetBundleBuild { assetBundleName = bundleName, assetNames = m_assetNames } }; if( !Directory.Exists( savePath ) ) Directory.CreateDirectory( savePath ); BuildPipeline.BuildAssetBundles( savePath, buildInfo, 0, EditorUserBuildSettings.activeBuildTarget ); AssetDatabase.Refresh(); }