Unity命令行打包WebGL的示例代码
作者:Excel2016 发布时间:2023-02-02 10:05:13
标签:Unity,打包,WebGL
1.扫描所有场景,保存并添加到Build Settings中
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneUtils
{
#if UNITY_EDITOR
public static void RefreshAllScene()
{
// 设置场景 *.unity 路径
string resourcesPath = Application.dataPath;
// 遍历获取目录下所有 .unity 文件
string[] absolutePaths = Directory.GetFiles(resourcesPath, "*.unity", SearchOption.AllDirectories);
List<EditorBuildSettingsScene> list = new List<EditorBuildSettingsScene>();
// 定义 场景数组
for (int i = 0; i < absolutePaths.Length; i++)
{
string path = "Assets" + absolutePaths[i].Remove(0, resourcesPath.Length);
path = path.Replace("\\", "/");
// 通过scene路径初始化
list.Add(new EditorBuildSettingsScene(path, true));
}
// 设置 scene 数组
EditorBuildSettings.scenes = list.ToArray();
}
public static void RefreshScene(params string[] tagetPaths)
foreach (string tagetPath in tagetPaths)
{
if (path.Contains(tagetPath))
{
// 通过scene路径初始化
list.Add(new EditorBuildSettingsScene(path, true));
}
}
#endif
}
2.暴露一个打包的方法,方便命令行调用
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
/// <summary>
/// 命令行批处理
/// </summary>
public class Batchmode
{
#if UNITY_EDITOR
static List<string> levels = new List<string>();
[MenuItem("FViteMVC/Build/BuildWebGL", false)]
public static void BuildWebGL()
{
// 打包前需要做的事情
FviteMvcEditor.RefreshAllScene();
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
if (!scene.enabled) continue;
levels.Add(scene.path);
}
// 第一个参数为所有场景路径
// 第二个参数是打包位置
// 第三个参数是目标平台
// 第四个参数是构建选项 None代表执行指定的构建,不包含任何特殊设置或额外任务
BuildPipeline.BuildPlayer(levels.ToArray(), "Build", BuildTarget.WebGL,BuildOptions.None);
}
#endif
}
3.写一个.bat文件
@echo off
echo lunch unity.exe ,please wait a moment...
"C:\Program Files\Unity\Hub\Editor\2020.3.18f1c1\Editor\Unity.exe" -quit -batchmode -projectPath "D:\Unity\Unity\FViteMVC" -executeMethod Batchmode.BuildWebGL
echo "Build WebGL done"
pause
来源:https://www.cnblogs.com/skyvip/p/15666548.html


猜你喜欢
- 下面一段内容有项目需求有项目分析,通过一个小demo给大家展示下C#如何对多线程、多任务管理的。项目需求:假设多个任务需要执行,每个任务不是
- **********************************************************************
- 异常方法//返回此可抛出对象的详细信息消息字符串public String getMessage() //将此可抛发对象及其回溯到标准错误流
- 一、饿汉式(静态常量)public class Face { private stat
- 前言前一段时间使用java来调用chatgpt的接口,然后写了一个简单小程序,java调用chatgpt接口,实现专属于自己的人工智能助手,
- 自用项目中统一Eclipse格式化Java、JavaScript、JSP、HTML代码设置1.Window->Preferences
- 题目要求java实现字符串中的字母排序并输出排序后的结果分析1、创建一个字符串,赋值并将字符逐个存进数组中。String str = &qu
- 问题: 在win10系统中,使用IDEA 查看源码的时候,经常跳转代码,这样会让使用者感觉和方便,但是当你想要返回上次跳转的位置时,却不知道
- 存储结构二叉树是一种特殊的树,给个结点最多有两个子节点,并且子节点有左右之分,并且兄弟,父亲,孩子可以很方便的通过编号得到1.在二叉树的第i
- 背景之前在网上发现这个问题public class GenericTest { //方法一 public static <T exte
- 目录前言闲扯使用技术所需知识储备实现步骤总结前言现代互联网项目中,很多场景下都需要使用一种叫做验证码的技术,常用的有图片验证码,滑块验证码,
- 主要功能共有三个角色:管理员、教师、学生。管理员功能有:学生管理、教师管理、评教管理、指标管理、课程管理等。教师功能有:学生管理、指标管理、
- 程序员讨厌写文档, 讨厌写注释, 而我还讨厌写日志, 输出一个 "Id=5, 姓名=王大锤
- ManualResetEvent表示线程同步事件,可以对所有进行等待的线程进行统一管理(收到信号时必须手动重置该事件)其构造函数为:publ
- 运行环境windows 7下载地址环境下载最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是wi
- 直接贴上代码,里面都有注释/// <summary> &n
- 查了网上的资料,有比较全面的,但有一个问题就是容易出现一个文字和框子不符合的现象。(仔细看,蓝色字母和背景的灰色有空白)要消除这个空白,很简
- 什么是枚举?枚举是JDK5引入的新特性。在某些情况下,一个类的对象是固定的,就可以定义为枚举。在实际使用中,枚举类型也可以作为一种规范,保障
- 一、图片预览:一、实现功能:需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView。二、具体实现:XML中布局中定义I
- 同步容器在 Java 中,同步容器主要包括 2 类:Vector、Stack、HashTableCollections 类中提供的静态工厂方