Editor_EditorWindow学习07转换平台也可一键导出

本文介绍了一个用于Unity项目的自定义编辑器窗口类ExportEditor,该类提供了导出项目的功能,包括选择目标平台、设定是否自动打包及指定版本号等选项,并详细展示了如何使用Unity的BuildPipeline来完成不同平台的打包过程。

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

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

public class ExportEditor : EditorWindow
{

    [MenuItem("Export/导出")]
    public static void ExportLocal()
    {
        EditorWindow.GetWindow(typeof(ExportEditor), false, "导出exe出来");
    }

    /// <summary>
    /// 设置后,是否自动出包
    /// </summary>
    private static bool isAutoBuild = false;
    /// <summary>
    /// 发布平台
    /// </summary>
    private static int buildTarget = BuildTarget.StandaloneWindows64.GetHashCode();
    /// <summary>
    /// 版本号
    /// </summary>
    private static string serverVersion = "2.1";

    /// <summary>
    /// 平台
    /// </summary>
    private static ESDKPlatform plat;
    void OnGUI()
    {
        EditorGUILayout.LabelField("导出exe", EditorStyles.boldLabel);
        isAutoBuild = EditorGUILayout.Toggle("勾上自动出包", isAutoBuild);

        string url = Application.dataPath.Replace("/Assets", "/");

        string[] selectNames = { 
                                   BuildTarget.StandaloneWindows.ToString(),
                                   BuildTarget.StandaloneWindows64.ToString(),
                                   BuildTarget.Android.ToString(),
                                   BuildTarget.iOS.ToString()
                               };
        int[] selectValues = { 
                                 BuildTarget.StandaloneWindows.GetHashCode(),
                                 BuildTarget.StandaloneWindows64.GetHashCode(),
                                 BuildTarget.Android.GetHashCode(),
                                 BuildTarget.iOS.GetHashCode()
                             };

        buildTarget = EditorGUILayout.IntPopup("发布平台", buildTarget, selectNames, selectValues);

        if (buildTarget == BuildTarget.StandaloneWindows.GetHashCode() || buildTarget == BuildTarget.StandaloneWindows64.GetHashCode())
        {
            url += "client/client.exe";
        }
        else if (buildTarget == BuildTarget.Android.GetHashCode() && plat == ESDKPlatform.ANDROID)
        {
            url += string.Format("微信登录端{0}.apk", serverVersion);
        }
        else if (buildTarget == BuildTarget.Android.GetHashCode() && plat == ESDKPlatform.LOCAL)
        {
            url += string.Format("客户端{0}.apk", serverVersion);
        }
        else if (buildTarget == BuildTarget.iOS.GetHashCode())
        {
            url += "XCode";
        }

        BuildOptions buildOptions = BuildOptions.None;
        //if (isDevelopment)
        //{
        buildOptions |= BuildOptions.Development;
        //}
        //if (isDebug)
        //{
        //    buildOptions |= BuildOptions.AllowDebugging;
        //}
        //if (isAutoConnect)
        //{
        //    buildOptions |= BuildOptions.ConnectWithProfiler;
        //}

        if (GUILayout.Button("设置_生成", GUILayout.Width(180)))//
        {
            if (isAutoBuild)
            {
                BuildPipeline.BuildPlayer(GetBuildScenes(), url, (BuildTarget)buildTarget, buildOptions);
                string folderUrl = url;
                while (folderUrl.IndexOf('/') != -1)
                {
                    folderUrl = folderUrl.Replace('/', '\\');
                }
                System.Diagnostics.Process.Start("Explorer.exe", "/select," + folderUrl);
            }
        }
    }

    /// <summary>
    /// 在这里找出你当前所有的场景文件,假设你只想把部分的scene文件打包 那么这里可以写你的条件判断 总之返回一个字符串数组
    /// </summary>
    static string[] GetBuildScenes()
    {
        List<string> names = new List<string>();
        foreach (var e in EditorBuildSettings.scenes)
        {
            if (e == null)
            {
                continue;
            }
            if (e.enabled)
            {
                names.Add(e.path);
            }
        }
        return names.ToArray();
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值