Unity | 编辑器开发

cs 复制代码
using Aliyun.OSS;
using Aliyun.OSS.Common;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using Unity.EditorCoroutines.Editor;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;
using UnityEngine.Networking;

public class MakeAB : EditorWindow
{

    private static string TALAccessKeyId = "your TALAccessKeyId";
    private static string TALAccessKeySecret = "your TALAccessKeySecret";
#if UNITY_ANDROID
    private int selectedOption = 2;
#elif UNITY_IOS
    private int selectedOption = 3;
#elif UNITY_STANDALONE_WIN
    private int selectedOption = 0;
#elif UNITY_STANDALONE_OSX
    private int selectedOption = 1;
#endif
    private string[] options = new string[] { "Windows", "Mac", "Android", "IOS" };
	private static string localABPath;
	private static float TALUploadProgress = 0f; // 上传进度
	private static string TALUploadProgressText = "0%"; // 进度文本
	
	
    [MenuItem("Tools/Make AB")]
    public static void ShowWindow()
    {
		//编辑器Make AB窗口紧靠Game窗口
        GetWindow<MakeAB>("Make AB", typeof(Editor).Assembly.GetType("UnityEditor.GameView"));
    }

    private void OnGUI()
    {
		//文本
        GUILayout.Label("未来云设置");
		//文本输入框
        TALAccessKeyId = EditorGUILayout.TextField("TALAccessKeyId", TALAccessKeyId);
        TALAccessKeySecret = EditorGUILayout.TextField("TALAccessKeySecret", TALAccessKeySecret);
		//间距
        GUILayout.Space(10);
		//划线
        EditorGUI.DrawRect(EditorGUILayout.GetControlRect(false, 1), new Color(0.5f, 0.5f, 0.5f, 0.5f));
        GUILayout.Space(10);
		//下拉列表
        selectedOption = EditorGUILayout.Popup("AB包编译平台", selectedOption, options);
        localABPath = "Assets/../AssetBundles/" + options[selectedOption];
		//右对齐文本
        EditorGUILayout.LabelField("*AB包路径:" + localABPath, new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleRight });
		//按钮
        if (GUILayout.Button("制作AB包"))
        {
			//弹窗
            bool confirm = EditorUtility.DisplayDialog(
                    "提示",
                    $"\n确定打{options[selectedOption]}平台的AB包吗?",
                    "确定",
                    "取消"
                );

            if (confirm)
            {
                BuildAB(selectedOption);
            }
            else
            {
                Debug.Log("取消打包");
            }
           
        }

        GUILayout.Space(10);
		//进度条
        GUILayout.BeginHorizontal();
        GUILayout.Label("Upload Progress:", GUILayout.Width(110));
        Rect rect = GUILayoutUtility.GetRect(200, 20);
        EditorGUI.ProgressBar(rect, TALUploadProgress, TALUploadProgressText);
        GUILayout.EndHorizontal();
		//刷新
        Repaint();
    }

    public void BuildAB(int targetOption)
    {
        if (!Directory.Exists(localABPath))
        {
            Directory.CreateDirectory(localABPath);
        }
        switch (targetOption)
        {
            case 0:
                BuildPipeline.BuildAssetBundles(localABPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
                break;
            case 1:
                BuildPipeline.BuildAssetBundles(localABPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSX);
                break;
            case 2:
                BuildPipeline.BuildAssetBundles(localABPath, BuildAssetBundleOptions.None, BuildTarget.Android);
                break;
            case 3:
                BuildPipeline.BuildAssetBundles(localABPath, BuildAssetBundleOptions.None, BuildTarget.iOS);
                break;
        }
        Debug.Log("AB包制作完成");

    }
}
相关推荐
mit6.8249 小时前
ONLYOFFICE 8.1 桌面编辑器测评:引领数字化办公新潮流
前端·笔记·编辑器
网路侠客12 小时前
您的私人办公室!-----ONLYOFFICE8.1版本的桌面编辑器测评
编辑器
阿林学习计算机12 小时前
【工具测评】ONLYOFFICE8.1版本桌面编辑器测评:好用!
编辑器
搂……住12 小时前
ONLYOFFICE8.1版本桌面编辑器测评
编辑器
乐吾乐科技13 小时前
【国产开源可视化引擎Meta2d.js】图纸
开发语言·前端·javascript·编辑器·web·数据可视化
乐吾乐科技13 小时前
【国产开源可视化引擎】Meta2d.js简介
前端·编辑器·流程图·web·数据可视化·大屏端
不会C语言的男孩14 小时前
vim常用操作
linux·编辑器·vim
拿我格子衫来14 小时前
图形编辑器基于Paper.js教程04: Paper.js中的基础知识
图像处理·编辑器·几何学
weixin_5051544615 小时前
易用且免费的在线3D交互编辑器?
3d·编辑器·数字孪生·数据可视化·3d产品配置器·3d交互展示
忆~遂愿15 小时前
「全新升级,性能更强大——ONLYOFFICE 桌面编辑器 8.1 深度评测」
人工智能·机器学习·语言模型·自然语言处理·编辑器·知识图谱·机器翻译