Unity3D一键导出程序

本文介绍了一个Unity编辑器窗口脚本,用于批量构建Unity场景为Windows可执行文件。该脚本提供选择导出路径、扫描场景及导出程序的功能。通过简单的按钮操作,可以将指定目录下的所有场景构建为独立的Windows应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;
using System.IO;

public class Tools : EditorWindow
{
    [MenuItem("Tools/Build for Windows")]
    public static void ShowWindow()
    {
        EditorWindow.GetWindow(typeof(Tools), true, "导出Windows应用程序");
    }
    static string exePath = "";
    static List<string> allSceneName = new List<string>();
    void OnGUI()
    {
        GUILayout.Label("导出路径:", EditorStyles.boldLabel);
        GUILayout.Label(exePath, EditorStyles.boldLabel);
        if (GUILayout.Button("选择导出路径"))
        {
            exePath = EditorUtility.SaveFolderPanel("导出路径", "", "");
        }
        if (GUILayout.Button("扫描场景"))
        {
            string[] sl = Directory.GetFiles(Application.dataPath + "/Scene/");
            foreach (string file in sl)
            {
                if (!file.Contains(".meta"))
                {
                    string temp = file;
                    if (!allSceneName.Contains(temp))
                    {
                        allSceneName.Add(temp);
                    }
                }
            }
        }

        if (GUILayout.Button("导出程序"))
        {
            string[] levels = new string[1];
            Debug.Log("allSceneName.Count:" + allSceneName.Count);
            if (allSceneName.Count > 0)
            {
                Debug.Log("allSceneName.Count:" + allSceneName.Count);
                for (int i = 0; i < allSceneName.Count; i++)
                {
                    levels[0] = allSceneName[i];
                    string temp = allSceneName[i].Replace(Application.dataPath + "/Scene/", "");
                    
                    temp = temp.Replace(".unity", "");
                    string exeName = exePath + "/" + temp + ".exe";
                    if (File.Exists(exeName))
                    {
                        File.Delete(exeName);
                        Directory.Delete(exePath + "/" + temp + "_Data",true);
                    }
                    BuildPipeline.BuildPlayer(levels, exeName, BuildTarget.StandaloneWindows, BuildOptions.None);
                }
            }
        }
    }
}


效果如图


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值