Unity一键打包APP

26 篇文章 1 订阅
1 篇文章 0 订阅

唉 ,好久没有写博客了,今天弄一个简单的工具类脚本吧,貌似之前写过批处理的,但是基本都差不了多少,核心的代码就那么两行吧~ 因为在我们开发中经常会出现频繁打包测试的功能,对于不懂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不同渠道的包体,需要大家自己自行去扩充哈,每一个项目都不一样啦~这里仅仅是抛砖引玉的作用哦!

高手请绕道~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值