【Unity实战】Jenkins与自定义命令行参数

这篇具有很好参考价值的文章主要介绍了【Unity实战】Jenkins与自定义命令行参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity是一款功能强大的游戏开发引擎,它提供了许多方便开发者使用的功能和工具。其中一个非常有用的功能是Unity命令行参数。通过使用命令行参数,开发者可以在启动Unity时自定义一些行为和设置,从而更好地管理和调试项目。

使用Unity命令行参数的好处是,它可以帮助开发者更好地管理和调试项目。通过在命令行中指定参数,我们可以自动化一些常见的任务,例如构建项目、执行测试、导出资源等。这不仅可以提高开发效率,还可以减少人为错误的发生。

当然有些时候我们需要自己定义一个或者多个命令行参数,比如我们要启动一个服务器构建、接入一个CI/CD,人手动操作肯定费时费力,而且不熟悉Unity编辑器的新手难免会出错。

自带参数

首先,在自定义参数前,我们先看一下自带的命令行参数是否就能满足我们的要求。在启动Unity编辑器时,我们可以在命令行中添加参数来改变Unity的行为。这可以通过在命令行中输入"Unity.exe -参数名 参数值"来实现。下面是一些常见的Unity命令行参数的示例:

1. -batchmode:这个参数可以让Unity在无需用户交互的情况下启动并执行指定的任务。这对于自动化构建和持续集成非常有用。

2. -quit:这个参数可以让Unity在启动后立即退出,适用于需要在启动时执行某些任务但不需要打开Unity编辑器的情况。

3. -projectPath:这个参数可以指定Unity项目的路径。通过在命令行中指定项目路径,我们可以直接打开指定的项目而不需要手动选择。

4. -executeMethod:这个参数可以指定在Unity启动后立即执行的方法。我们可以通过这个参数来自动运行一些脚本或者执行一些特定的操作。

5. -nographics:这个参数可以让Unity在无需图形界面的情况下启动。这对于一些服务器或者非图形环境下的使用非常有用。

除了上述示例外,Unity还提供了许多其他的命令行参数,用于控制和定制Unity的行为。开发者可以根据自己的需求来选择和使用这些参数。更多自带参数请访问:

Unity - Manual: Command-line arguments

一般来说,-executeMethod就能满足很多人的要求,这块可以执行一个静态类的静态函数或者方法,发挥空间很足够。当然唯独问题是如果函数方法里有参数需要传递,那么这肯定歇菜。如果你有这个需求,那么就往下看吧!

自定义参数

老规矩,情景教学!当然还是基于我之前的一个公共repo去讲

GitHub - Shepherd0619/JenkinsBuildUnity: A little script that connect Unity (with HybridCLR hot update) and Jenkins together.

假设你要自定义要打的场景及其顺序、打包目标地址,但是我们的Jenkins打包机不可能自己会打开Unity编辑器图形界面修改BuildSettings里的场景设置对吧。

首先先在你的打包脚本(或者另起一个脚本放在Editor文件夹下),我们先获取一下传递进来的参数

// 获取命令行参数
string[] args = Environment.GetCommandLineArgs();

拿到array以后,我们需要筛选出我们的自定义参数,你可以写一个方法

/// <summary>
/// 获取某个参数
/// </summary>
/// <param name="args">全部的命令行参数</param>
/// <param name="name">要获取的参数名称</param>
/// <returns>所求参数</returns>
private static string[] GetArgument(string[] args, string name)
{
	int start = Array.FindIndex(args, arg => arg == $"-{name}");
	if (start < 0)
	{
		Console.WriteLine($"[JenkinsBuild.GetArgument] Can not find argument: {name}");
		return null;
	}
	start++;
	int end = Array.FindIndex(args, start, arg => arg[0] == '-');
	if (end < 0) end = args.Length;
	int count = end - start;
	if (count <= 0)
	{
		Console.WriteLine($"[JenkinsBuild.GetArgument] Can not find argument value: {name}, Count: {count}, Start: {start}, End: {end}");
		return null;
	}

	string[] result = args.Skip(start).Take(count).ToArray();
	return result;
}

 用法可参考如下

        // 获取scenes参数
        string[] scenes = GetArgument(args, "scenes");
        if (scenes == null || scenes.Length <= 0) return;

		// 获取targetPath参数
        string[] targetPath = GetArgument(args, "targetPath");
		if (targetPath == null || targetPath.Length <= 0) return;

		BuildPlayerOptions options = new BuildPlayerOptions();
		options.target = BuildTarget.StandaloneLinux64;
		options.subtarget = (int)StandaloneBuildSubtarget.Server;
		options.scenes = scenes;
		options.locationPathName = targetPath[0];

如代码所示,至于怎么校验参数的有效性,要么判断是否为空,要么看长度,两项只要有一个有问题,那么直接return。 

Jenkins侧

你可以在你Jenkins现有的Job上勾上This project is parameterized来配置参数。

【Unity实战】Jenkins与自定义命令行参数,unity,unity,游戏引擎,jenkins

然后在拉起Unity编辑器那块引用上面的参数,如${上面在Jenkins定义的参数名}

【Unity实战】Jenkins与自定义命令行参数,unity,unity,游戏引擎,jenkins

保存设置后,以后执行job都会让你配置参数了

【Unity实战】Jenkins与自定义命令行参数,unity,unity,游戏引擎,jenkins

总结

总结起来,Unity命令行参数是一种非常有用的工具,可以帮助开发者更好地管理和调试项目。通过使用命令行参数,我们可以在启动Unity时自定义一些行为和设置,从而提高开发效率和减少错误。希望本文对大家了解和使用Unity命令行参数以及如何自定义有所帮助。文章来源地址https://www.toymoban.com/news/detail-804427.html

到了这里,关于【Unity实战】Jenkins与自定义命令行参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【unity与android的交互】移动游戏发布更安心!Unity安卓平台打包相关的常见参数全详解

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 首先需要切换到安卓平台 step1 :打包前的基础参数的设置 step2:包名的设置需要勾选,必须要去设置的内容 打包后进行测

    2024年04月17日
    浏览(75)
  • 【Unity】AI实战应用——Unity接入ChatGPT和对游戏开发实际应用的展望

    GPT for unity插件地址: GitHub - sunsvip/ChatGPTForUnity: ChatGPT for unity 用法: 打开Unity PackageManager界面. Add package from git URL 粘贴插件地址添加 https://github.com/sunsvip/ChatGPTForUnity.git ———————————————————————————————————— 几个资本大佬花钱让一群

    2023年04月08日
    浏览(49)
  • 【Unity】AI实战应用——Unity接入GPT和对游戏开发实际应用的展望

    GPT for unity插件地址: GitHub - sunsvip/ChatGPTForUnity: ChatGPT for unity 用法: 打开Unity PackageManager界面. Add package from git URL 粘贴插件地址添加 https://github.com/sunsvip/ChatGPTForUnity.git ———————————————————————————————————— 几个资本大佬花钱让一群

    2024年02月08日
    浏览(43)
  • 【Unity实战】实现一款简单的FPS游戏

    实现一款FPS游戏需要以下步骤: 1.创建场景:在Unity中创建3D场景,设定地形、灯光、天气等环境,新增角色、武器等道具。 2.角色控制:创建角色,并添加Unity内置的角色控制器或自定义控制器脚本,处理角色的移动、射击、跳跃、动作等。 3.武器系统:创建武器模型,添加

    2024年02月06日
    浏览(45)
  • Unity手机游戏开发:从搭建到发布上线全流程实战

    前言: 技术书籍是学习技术知识的重要资源之一。读技术书可以帮助我们学习新技能和知识,技术书籍提供了可靠的、全面的信息,帮助我们快速学习新技能和知识。同时技术书籍有助于保持你的竞争力,因为它们提供了最新的技术知识和实践。这在当今快速发展的技术领域

    2024年01月22日
    浏览(66)
  • 【unity项目实战】3DRPG游戏开发07——其他详细的设计

    参考原视频链接: 【视频】:https://space.bilibili.com/370283072 注意 :本文为学习笔记记录,推荐支持原作者,去看原视频自己手敲代码理解更加深入

    2024年02月05日
    浏览(48)
  • DOTS介绍+Unity DOTS-MAN小游戏项目实战

    DOTS是Unity在17年左右提出的一个概念,其核心是ECS。 提示:以下是本篇文章正文内容,下面案例可供参考 全称:(Multi-Thread)Data-Oriented-Tech-Stack (多线程式)数据导向型技术堆栈 实体组件系统(ECS) - 提供使用面向数据的方法进行编码的框架。在Unity中它通过Entities软件包进行分发,

    2023年04月13日
    浏览(45)
  • 【Unity】2D游戏-愤怒的小鸟教学实战(附源码和实现步骤 超详细)

    需要源码和资源文件请点赞关注收藏后评论区留言私信~~~ 下面我们将在Unity3D中实现愤怒的小鸟的简单版,游戏中最复杂的部分是物理系统,但是借助于Unity3D编辑器,我们就不用担心太多了 先展示程序运行效果如下  运行程序可以将小鸟弹射出去 并且可以显示运动轨迹 读者

    2024年02月04日
    浏览(112)
  • 【经典游戏】坦克大战 Unity2D项目实战(保姆级教程)

    主要内容: 1.Unity3D引擎中的基础设置。 2.2D场景的搭建,预制体制作。 3.2D动画的制作。 4.图片图集的有关知识。 5.碰撞器,触发器,碰撞检测与触发检测。 6.2D游戏渲染的一些知识。 7.敌人AI的编写。 8.UGUI有关内容,场景切换等。 所需资源包链接:https://pan.baidu.com/s/199wuwM

    2024年02月06日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包