使用 命令行/WinForm 来打包Unity可执行程序


前言

各位Unity开发者都一定被漫长的项目打包过程折磨过,同时公司的Git库一般都不上传各种日志文档和环境配置,克隆下来打开再打包可执行程序繁琐又耗时,这些对测试人员进行打包测试非常的不友好。
是否可以开发一款软件,让测试人员在GIT库上克隆仓库后可以直接进行打包,不再需要打开Unity来打包呢?
因此我想到了使用命令行来对Unity进行打包,再用WinForm套了个外壳,让操作更符合人的习惯。

一、编辑Editor打包工具

1.编辑打包脚本

在项目目录下新建一个C#脚本文件,命名为BuildScript,可以在该脚本中修改需要打包的场景,打包的目标路径和打包之后的程序名。
BuildScript代码如下:

using UnityEditor;
using UnityEngine;

public class BuildScript
{
   
    private static string[] scenes = {
    "Assets/Scenes/SampleScene.unity" };         //要打包的场景
    private static string Path = "Build";                                           //打包的目标路径,默认为父路径下的Build文件夹
    private static string GameName = "MyGame";                                      //打包后的程序名

    /// <summary>
    /// 打包成EXE
    /// </summary>
    [MenuItem("Build/Build EXE")]
    public static void BuildEXE()
    {
   
        string WindowsPath = "/Windows/";
        BuildPipeline.BuildPlayer(scenes, Path + WindowsPath + GameName + ".exe", BuildTarget.StandaloneWindows, BuildOptions.None);
        Debug.Log(Path + WindowsPath + GameName + ".exe"+"已生成");
    }

    /// <summary>
    /// 打包成APK
    /// </summary>
    [MenuItem("Build/Build APK")]
    public static void BuildAPK()
    {
   
        string AndroidPath = "/Android/";
        BuildPipeline.BuildPlayer(scenes, Path + AndroidPath + GameName + ".apk", BuildTarget.Android, BuildOptions.None);
    }
}

2.Unity编辑器中样式

保存BuildScript脚本之后,回到 Unity 点击菜单栏 Build-Build EXE或Build-Build APK 即可进行打包。
在这里插入图片描述

二、命令行调用Unity打包函数

1.Unity命令行常用参数

可以查看:Unity命令行官方文档

-batchmode
在 批处理模式下运行Unity,它不会弹出窗口。当脚本代码在执行过程中发生异常或其他操作失败时Unity将立即退出,并返回代码为1。
-quit
命令执行完毕后将退出Unity编辑器。请注意,这可能会导致错误消息被隐藏(但他们将显示在Editor.log文件)
-buildWindowsPlayer
构建一个32位的Windows平台的exe(例如:-buildWindowsPlayer path/to/your/build.exe)
-buildWindows64Player
构建一个64位的Windows平台的exe(例如:-buildWindows64Player path/to/your/build.exe)
-importPackage
导入一个的package,不会显示导入对话框
-createProject
根据提供的路径建立一个空项目
-projectPath
打开指定路径的项目
-logFile
指定输出的日志文件
-nographics
当运行在批处理模式,不会初始化显卡设备,不需要GPU参与;但如果你需要执行光照烘焙等操作,则不能使用这个参数,因为它需要GPU运算。
-executeMethod
在Unity启动的同时会执行静态方法。也就是说,使用executeMethod我们需要在编辑文件夹有一个脚本并且类里有一个静态函数。
-single-instance
在同一时间只允许一个游戏实例运行。如果另一个实例已在运行,然后再次通过-single-instance启动它的话会调节到现有的这个实例。
-nolog
不产生输出日志。 通常output_log.txt被写在游戏输出目录下的*_Data文件夹中

2.命令行调用静态打包函数

在编译器所在目录下:
在这里插入图片描述

使用命令行输入,其中 “C:\Unity Project\PureMVC_study2” 是工程所在的目录,
-executeMethod BuildScript.BuildEXE是调用BuildScript中的静态方法BuildEXE。

Unity.exe -batchmode -nographics -quit -projectPath "C:\Unity Project\PureMVC_study2" -executeMethod BuildScript.BuildEXE

命令行执行完毕后会在工程目录下的Build文件夹中生成EXE文件。

注意:一个Unity工程只能打开一个实例,所以如果我们已经手动用Unity打开了工程,此时执行该命令是会报错的。请确保已关闭相应的工程。

在这里插入图片描述

三、使用WinForm创建可视化操作界面

此处可能用Python来写会更轻量快捷,因本人Python能力有限,故用C#来编写WinForm可视化界面。

1.可视化界面

可视化界面如下:
在这里插入图片描述

2.代码详细:

①CmdHelper类:

该类下RunCmd方法实现了调用CMD命令窗口

public class CmdHelper
        {
   
            private static string CmdPath = @"C:\Windows\System32\cmd.exe";

            /// <summary>
            /// 执行cmd命令
            /// 多命令请使用批处理命令连接符:
            /// <![CDATA[
            /// &:同时执行两个命令
            /// |:将上一个命令的输出,作为下一个命令的输入
            /// &&:当&&前的命令成功时,才执行&&后的命令
            /// ||:当||前的命令失败时,才执行||后的命令]]>
            /// 其他请百度
            /// </summary>
            /// <param name="cmd"></param>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值