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

来源:互联网 发布:数据字典的作用是什么 编辑:程序博客网 时间:2024/06/14 23:15
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();    }}

这里写图片描述