Unity打包(激活场景、选择物体、预设物体)

代码参考如下:

using System.IO;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;

public class BuildAssetBundle : MonoBehaviour
{
	//---------------------------------------------------------------------------------------------------------------------------------------------------------
	static void PackageScene(BuildTarget buildTarget)
	{
		string packagePath = EditorUtility.OpenFolderPanel("设置激活场景的打包路径(" + buildTarget + "版)", Application.streamingAssetsPath, "");
		if (packagePath.Length <= 0 || !Directory.Exists(packagePath))
		{
			Debug.Log("Directory Error!");
			return;
		}
		packagePath += ("/" + EditorSceneManager.GetActiveScene().name);
		BuildPipeline.BuildPlayer(new string[] { }, packagePath, buildTarget, BuildOptions.BuildAdditionalStreamedScenes);
		Debug.Log(packagePath);
		AssetDatabase.Refresh();
	}

	[MenuItem("资源打包 / 当前场景(WebGL版)")]
	static void PackageSceneWebGL()
	{
		PackageScene(BuildTarget.WebGL);
	}

	[MenuItem("资源打包 / 当前场景(Window版)")]
	static void PackageSceneWindow()
	{
		PackageScene(BuildTarget.StandaloneWindows);
	}

	//---------------------------------------------------------------------------------------------------------------------------------------------------------
	static void PackageSelected(BuildTarget buildTarget)
	{
		string path = AssetDatabase.GetAssetPath(Selection.activeObject);
		if (path.Length == 0)
		{
			Debug.LogWarning("没有选择可被打包的对象!");
			return;
		}
		Debug.Log(path);

		string packagePath = EditorUtility.OpenFolderPanel("设置选择资源的打包路径(" + buildTarget + "版)", Application.streamingAssetsPath, "");
		if (packagePath.Length <= 0 || !Directory.Exists(packagePath))
		{
			Debug.Log("Directory Error!");
			return;
		}
		packagePath += "/" + Selection.activeObject.name;
		Debug.Log(packagePath);
		Object obj = AssetDatabase.LoadMainAssetAtPath(path);
		BuildPipeline.BuildAssetBundle(obj, null, packagePath, BuildAssetBundleOptions.None, buildTarget);
		AssetDatabase.Refresh();
	}

	[MenuItem("资源打包 / 选择资源(WebGL版)")]
	static void PackageSelectedWebGL()
	{
		PackageSelected(BuildTarget.WebGL);
	}

	[MenuItem("资源打包 / 选择资源(Window版)")]
	static void PackageSelectedWindow()
	{
		PackageSelected(BuildTarget.StandaloneWindows);
	}
	//---------------------------------------------------------------------------------------------------------------------------------------------------------
	static void Package(BuildTarget buildTarget)
	{
		string packagePath = EditorUtility.OpenFolderPanel("设置预设资源的打包路径(" + buildTarget + "版)", Application.streamingAssetsPath, "");
		if (packagePath.Length <= 0 || !Directory.Exists(packagePath))
		{
			Debug.Log("Directory Error!");
			return;
		}

		BuildPipeline.BuildAssetBundles(packagePath, BuildAssetBundleOptions.None, buildTarget);
		AssetDatabase.Refresh();
	}

	[MenuItem("资源打包 / 预设资源(WebGL版)")]
	static void PackageWebGL()
	{
		Package(BuildTarget.WebGL);
	}

	[MenuItem("资源打包 / 预设资源(Window版)")]
	static void PackageWindow()
	{
		Package(BuildTarget.StandaloneWindows);
	}
}

说明两点:

一、BuildPipeline.BuildAssetBundle这个方法显示已经过时,不过,管用就好。

二、如果希望当前场景打包内容包含寻路数据,需要在Player Setting中的H5发布中的Strip Engine Code的勾选去掉,如下图:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值