当前位置:   article > 正文

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

unity 命令行执行editor


前言

各位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);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

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
  • 1

命令行执行完毕后会在工程目录下的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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/98414
推荐阅读
相关标签
  

闽ICP备14008679号