唉 ,好久没有写博客了,今天弄一个简单的工具类脚本吧,貌似之前写过批处理的,但是基本都差不了多少,核心的代码就那么两行吧~ 因为在我们开发中经常会出现频繁打包测试的功能,对于不懂Unity的一些测试和策划人员来说,他们不会啊,老是麻烦程序也不太好对吧,干脆直接来个工具吧,傻瓜式打包APP吧!哈哈哈~
直接上代码~
/****************************************************
文件:BuildApp.cs
作者:LYZY
日期:2019/09/11 16:24:53
功能:一键打包的脚本
*****************************************************/
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEditor;
public class BuildApp
{
private static string m_AppName = PlayerSettings.productName;
public static string m_AndroidPath = Application.dataPath + "/../BuildeTarget/Android/";
public static string m_IOSPath = Application.dataPath + "/../BuildeTarget/IOS/";
public static string m_WindiwsPath = Application.dataPath + "/../BuildeTarget/Windows/";
[MenuItem("Tools/一键打包")]
public static void Build()
{
//获取不同平台下面的AB包资源的路径
string abPath = Application.dataPath + "/../AssetBundle/" +
EditorUserBuildSettings.activeBuildTarget.ToString() + "/";
string savePath = "";
if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
{
savePath = m_AndroidPath + m_AppName + EditorUserBuildSettings.activeBuildTarget + "_" +
string.Format("_{0:yyyy_MM_dd_HH_mm}", DateTime.Now) + ".apk";
}
else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS)
{
savePath = m_IOSPath + m_AppName + EditorUserBuildSettings.activeBuildTarget + "_" +
string.Format("_{0:yyyy_MM_dd_HH_mm}", DateTime.Now);
}
else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64 ||
EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows)
{
savePath = m_WindiwsPath + m_AppName + EditorUserBuildSettings.activeBuildTarget + "_" +
string.Format("_{0:yyyy_MM_dd_HH_mm}/{1}.exe", DateTime.Now, m_AppName);
}
BuildPipeline.BuildPlayer(FindEnableEditorScenes(), savePath,
EditorUserBuildSettings.activeBuildTarget, BuildOptions.None);
}
/// <summary>
/// 查找激活的要打包的场景
/// </summary>
/// <returns></returns>
private static string[] FindEnableEditorScenes()
{
List<string> edtiorScenes = new List<string>();
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
if (!scene.enabled) continue;
edtiorScenes.Add(scene.path);
}
return edtiorScenes.ToArray();
}
}
其实核心代码很简单,就不加注释去解释了,就当小工具类使用吧~
当然了这个只是简单的打包哈,对于接了SDK不同渠道的包体,需要大家自己自行去扩充哈,每一个项目都不一样啦~这里仅仅是抛砖引玉的作用哦!
高手请绕道~